概述:

useradd\usermod\userdel\passwd\groupadd\groupmod\groupdel\gpasswd\newgrp\id\whoami\chsh\su


一、基础知识:

1、3A认证:用户认证(authentication)、授权(authorization)、审计(audition)


二、用户类别、标识、及名称解析库数据库

1、用户类别:管理员、普通用户(普通用户又可分为:系统用户、登录用户)。

2、用户标识:UserID UID,一般用16bits二进制表示(其范围为:0-65535);

管理员ID:0;

普通用户ID范围:1-65535

    系统用户ID范围:1-499(centos6),1-999(centos7)

    登录用户ID范围:500-60000(centos6),1000-60000(centos7)


系统用户:就是不用登录系统而在系统启动时自动运行以保证某种服务的运行,同时保证以拥有最小权限(非管理员)的命令运行的一类用户。


用户登录时需要将登录名转换为UID,解析方法为查找系统内的名称解析数据库(/etc/passwd)

passwd数据库信息如:

[root@localhost ~]# head -2 /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

[root@localhost ~]#


[root@localhost ~]# whatis passwd        //查看passwd命令在哪些帮助章节

sslpasswd (1ssl)     - compute password hashes

passwd (1)           - update user's authentication tokens

passwd (5)           - password file        //第5章节,命令配置文件格式说明

[root@localhost ~]#man 5 passwd

......

 name:password:UID:GID:GECOS:directory:shell    //    GID为用户所属主组ID

将passwd文件第一行代入:

root     :      x       : 0  :   0  :  root      :   /root   : /bin/bash

用户名: 密码    :UID:GID:描述信息:用户主目录:默认shell


三、组类别、组标识、组名称解析库

1、组类别分类一:管理员组,普通用户组(普通用户组又分为:系统组和登录组)

1.1、组标识:GroupID,GID;一般用16bits二进制表示(其范围为:0-65535);

管理员组ID:0;

普通用户组ID范围:1-65535

    系统用户组ID范围:1-499(centos6),1-999(centos7)

    登录用户I组D范围:500-60000(centos6),1000-60000(centos7)

组在使用时也需要将组名解析为GID,解析方法为查找系统内的名称解析数据库(/etc/group)

group数据库如:

[root@localhost ~]# head -2 /etc/group

root:x:0:        //root为组名,0为组id

bin:x:1:

[root@localhost ~]#

group文件格式: group_name:password:GID:user_list

注意:user_list:该组的用户成员列表,需要注意的是这里的组为用户的附件组;基本组成员在etc/passwd的GID中了。


2、组类别分类二:用户的主组、用户的附加组。

3、组类别分类三:用户私有组(组名同用户名,且只含有一个用户)、公共组(组内包含多个用户)


四、认证信息:通过密码认证(password)

通过比对事先存储的,与登录时提供的信息是否一致。

用户密码存储位置:/etc/shadow

[root@localhost ~]# head -n 2 /etc/shadow

root:$6$GeKChJmIDB8KmeX2$UwylvnZwolmF7XyddqC5yp3CPd6grCw.aBdsqm8O7a1q3pVOmcXQPSAl7b.E1TVl.gtOEo2RtkxCiH3TGEsUy.::0:99999:7:::

bin:*:16659:0:99999:7:::

[root@localhost ~]#

可以用man 5 shadow查看配置文件格式信息;(共9个字段,用8个冒号(:)分隔)


root:$6$GeKChJmIDB8KmeX2$UwylvnZwolmF7XyddqC5yp3CPd6grCw.aBdsqm8O7a1q3pVOmcXQPSAl7b.E1TVl.gtOEo2RtkxCiH3TGEsUy.::0:99999:7:::

  1. 登录名:root;

  2. 加密后的密码:用3个$符分开, 1-2之间说明加密算法(如6代表sha512),2-3之间是 随机数,3之后的才是密码      $6$GeKChJmIDB8KmeX2$UwylvnZwolmF7XyddqC5yp3CPd6grCw.aBdsqm8O7a1q3pVOmcXQPSAl7b.E1TVl.gtOEo2RtkxCiH3TGEsUy

  3. 最后一次更改密码时间:空表示禁用了,如果启用会从linux元年开始天数

  4. 密码的最小使用期限:0表示没有最小密码年龄

  5. 密码的最大使用期限:99999

  6. 密码的警告时间:7

  7. 密码禁用期限:空

  8. 账户过期日期:

  9. 保留字段:




组密码存储位置:   /etc/gshadow

[root@localhost ~]# head -n 2 /etc/gshadow

root:::

bin:::

[root@localhost ~]#


加密算法:对称加密、非对称加密、单向加密(主要用来提取特征码做对比)。

单向加密算法:

  1. md5:128bits

  2. sha:160bits

  3. sha224

  4. sha256:

  5. sha384:

  6. sha:512



五、用户相关操作命令(useradd、userdel、usermod、passwd)

 1.1、useradd [选项] 登录

选项:

-u,--uid UID:指定uid(默认为上一个id+1);

-g,--gid GROUP:指定基本组gid或组名(默认和用户id一样),此组必须事先存在;

-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]

           用户还属于的附加组列表。每个组都用逗号隔开,没有中间的空格。这里的组受到了 -g

           选项给定的组同样的限制。默认上,用户只属于初始组。

-c, --commentCOMMENT:指定用户描述信息;


-d, --homeHOME_DIR

           将创建新用户,并使用 HOME_DIR 作为用户登陆目录的值。默认值是将 LOGIN 名附加到         BASE_DIR后面,并使用这作为登陆目录。目录不一定必须已经存在 HOME_DIR,但是会在需要时创建。

            备注:新建用户的家目录是通过复制/etc/skel目录并重命名得以实现的,如果创建的用户的家目录已经存在,则在创建时不会为用户复制环境配置文件。因此最好不要事先创建家目录文件。

/etc/skel的文件:

[root@localhost ~]# ls -a  /etc/skel

.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla


 -s, --shellSHELL

           新用户的登录 shell 名。

           这个选项在 /etc/default/useradd 设置 SHELL 变量。

            备注:所有可用的shell在/etc/shells文件:

[root@localhost zzz]# cat /etc/shells

/bin/sh

/bin/bash

/sbin/nologin    //系统用户的shell(不登录)

/usr/bin/sh

/usr/bin/bash

/usr/sbin/nologin    //系统用户的shell(不登录)

/bin/tcsh

/bin/csh

[root@localhost zzz]#


 -r, --system

           创建一个系统账户。

           System users will be created with no aging information in /etc/shadow, and their numeric identifiers

           are chosen in the SYS_UID_MIN-SYS_UID_MAX range, defined in /etc/login.defs, instead of

           UID_MIN-UID_MAX (and their GID counterparts for the creation of groups).

           注意:useradd 不会为这种用户创建主目录,无论 /etc/login.defs (CREATE_HOME)

           中是的默认设置是怎样。如果想为要创建的系统账户创建主目录,需要指定 -m 选项。

 -m, --create-home

           如果不存在,则创建用户主目录。骨架目录中的文件和目录(可以使用 -k 选项指定),将会复制到主目录。

           默认上,如果没有指定此选项并且 CREATE_HOME 没有启用,不会创建主目录。

       -M

           不创建用户主目录,即使系统在 /etc/login.defs 中的设置 (CREATE_HOME) 为 yes。

 -f, --inactiveINACTIVE

           密码过期后,账户被彻底禁用之前的天数。0 表示立即禁用,-1 表示禁用这个功能。


1.2、 useradd -D:  显示或更改默认的 useradd 配置,如果想更改默认配置可以在useradd -D 后再加选项即可。

更改默认值

       只带 -D 选项使用时,useradd 将显示当前的默认值。-D 和其它选项配合使用时,useradd

       将为指定的选项更新默认值。有效的“更改默认值”选项有:

       -b, --base-dirBASE_DIR

           新用户主目录的路径前缀。如果创建新账户时,没有使用 -d 选项,用户的名称将会缀在 BASE_DIR的后边形成新用户的主目录名。这个选择在 /etc/default/useradd 中设置 HOME 选项。

       -e, --expiredateEXPIRE_DATE

           禁用此用户账户的日期。

           此选项在 /etc/default/useradd 中设置 EXPIRE 变量。

       -f, --inactiveINACTIVE

           密码过期到账户被禁用之前的天数。

           这个选项在 /etc/default/useradd 中设置 INACTIVE 变量。

       -g, --gidGROUP

           新用户初始组的组名或 ID (使用了 -N/--no-user-group 或者 /etc/login.defs 中的变量 USERGROUPS_ENAB

           设置为 no 时)。给出的组必须存在,并且数字组 ID 必须有一个已经存在的项。

           这个选项在 /etc/default/useradd 中设置 GROUP 变量。


[root@localhost zzz]# useradd -D

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

[root@localhost zzz]#


更改默认shell:

[root@localhost zzz]# useradd -D -s /bin/csh

[root@localhost zzz]# useradd -D

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/csh

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

[root@localhost zzz]#


 1.3、useradd -D [选项]


[root@localhost ~]# useradd tete    //默认情况下会创建一个和用户名一样的私有组,如果gid被占用,则用下一个

[root@localhost ~]# tail -1 /etc/passwd    //用户id为1001.而gid为1002,查看/etc/group

tete:x:1001:1002::/home/tete:/bin/bash

[root@localhost ~]# tail -1 /etc/group

tete:x:1002:

[root@localhost ~]#


2、usermod

选项大多数和useradd选项一样。

用法:usermod [选项] 登录

选项:

  -c, --comment 注释            GECOS 字段的新值

  -d, --home HOME_DIR           用户的新主目录    //用户原来的文件将被覆盖,一般和-m一起使用不覆盖

  -e, --expiredate EXPIRE_DATE  设定帐户过期的日期为 EXPIRE_DATE

  -f, --inactive INACTIVE       过期 INACTIVE 天数后,设定密码为失效状态

  -g, --gid GROUP               强制使用 GROUP 为新主组

  -G, --groups GROUPS           新的附加组列表 GROUPS    //原来的附加组将被删除

  -a, --append GROUP            将用户追加至上边 -G 中提到的附加组中,

                                并不从其它组中删除此用户

  -h, --help                    显示此帮助信息并推出

  -l, --login LOGIN             新的登录名称

  -L, --lock                    锁定用户帐号    //在原来用户密码字符串(加密后)前加“!”,解锁即去掉叹号。

  -m, --move-home               将家目录内容移至新位置 (仅于 -d 一起使用)

  -o, --non-unique              允许使用重复的(非唯一的) UID

  -p, --password PASSWORD       将加密过的密码 (PASSWORD) 设为新密码

  -R, --root CHROOT_DIR         chroot 到的目录

  -s, --shell SHELL             该用户帐号的新登录 shell

  -u, --uid UID                 用户帐号的新 UID

  -U, --unlock                  解锁用户帐号

  -Z, --selinux-user  SEUSER       用户账户的新 SELinux 用户映射


3、userdel:

userdel [选项] 登录

选项:

    -r: 删除用户时一并删除用户家目录,默认不删除。


4、passwd:

 passwd  [-k]  [-l]  [-u  [-f]]  [-d]  [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S]

       [--stdin] [username]

不带参数 表示修改自己的密码。

passwd USERNAME:修改指定用户的密码,仅管理员有此权限。

用法: passwd [选项...] <帐号名称>

  -k, --keep-tokens       保持身份验证令牌不过期

  -d, --delete            删除已命名帐号的密码(只有根用户才能进行此操作)

  -l, --lock              锁定指名帐户的密码(仅限 root 用户)

  -u, --unlock            解锁指名账户的密码(仅限 root 用户)

  -e, --expire            终止指名帐户的密码(仅限 root 用户),指日期。

  -f, --force             强制执行操作

  -x, --maximum=DAYS      密码的最长有效时限(只有根用户才能进行此操作)

  -n, --minimum=DAYS      密码的最短有效时限(只有根用户才能进行此操作)

  -w, --warning=DAYS      在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)

  -i, --inactive=DAYS     当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)

  -S, --status            报告已命名帐号的密码状态(只有根用户才能进行此操作)


  --stdin                 从标准输入读取令牌(只有根用户才能进行此操作)        //一般在脚本中使用。

[root@localhost zzz]# echo "1234567" | passwd --stdin 11

更改用户 11 的密码 。

passwd:所有的身份验证令牌已经成功更新。

[root@localhost zzz]# echo "1234567" | passwd --stdin 11 &> /dev/null

[root@localhost zzz]# echo $?

0

[root@localhost zzz]#


Help options:

  -?, --help              Show this help message

  --usage                 Display brief usage message


六、用户组相关操作命令(groupadd、groupdel、groupmod、gpasswd

1、groupadd :添加组

 groupadd [选项] group

选项:

    -g: 指定gid号。

    -r:创建系统组。

2、gourpmod:修改组:

 groupmod [选项] GROUP

选项:

    -g: 修改gid号。

    -n:修改组名。

3、groupdel :修改组

 groupdel [选项] GROUP

4、gpasswd

 gpasswd [选项] group

不带选项时是给组修改密码。 //带密码是防止用户随意切换临时基本组。

#newgrp 组名:临时切换基本组,用完记得退出(exit)

newgrp [-] [group]

-bash-4.2$ id

uid=1004(123) gid=1005(123) 组=1005(123),1004(test12) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

-bash-4.2$ touch 11

-bash-4.2$ ll

总用量 0

-rw-rw-r--. 1 123 123 0 11月 26 23:11 11

-bash-4.2$ newgrp test12        //临时切换用户的基本组。

bash-4.2$ touch 22

bash-4.2$ ls -l

总用量 0

-rw-rw-r--. 1 123 123    0 11月 26 23:11 11

-rw-rw-r--. 1 123 test12 0 11月 26 23:11 22

bash-4.2$

uid=1004(123) gid=1004(test12) 组=1004(test12),1005(123) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

bash-4.2$

bash-4.2$ exit

-bash-4.2$ id

uid=1004(123) gid=1005(123) 组=1005(123),1004(test12) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023



用法:gpasswd [选项] 组

选项:

  -a, --add USER                向组 GROUP 中添加用户 USER        //附加组

  -d, --delete USER             从组 GROUP 中添加或删除用户

  -h, --help                    显示此帮助信息并推出

  -Q, --root CHROOT_DIR         要 chroot 进的目录

  -r, --delete-password         remove the GROUP's password

  -R, --restrict                向其成员限制访问组 GROUP

  -M, --members USER,...        设置组 GROUP 的成员列表

  -A, --administrators ADMIN,...        设置组的管理员列表

除非使用 -A 或 -M 选项,不能结合使用这些选项。

[root@localhost ~]#


七、用户及组其他相关命令:(chage、chsh、id、w、who)

1、chage:修改用户密码过期信息

chage [options] LOGIN

Options:

  -d, --lastday LAST_DAY        set date of last password change to LAST_DAY

  -E, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE

  -h, --help                    display this help message and exit

  -I, --inactive INACTIVE       set password inactive after expiration

                                to INACTIVE

  -l, --list                    show account aging information

  -m, --mindays MIN_DAYS        set minimum number of days before password

                                change to MIN_DAYS

  -M, --maxdays MAX_DAYS        set maximim number of days before password

                                change to MAX_DAYS

  -R, --root CHROOT_DIR         directory to chroot into

  -W, --warndays WARN_DAYS      set expiration warning days to WARN_DAYS

2、id:显示用户真实有效id

 id [OPTION]... [USER]

 -a             ignore, for compatibility with other versions

  -Z, --context  print only the security context of the current user

  -g, --group    print only the effective group ID

  -G, --groups   print all group IDs

  -n, --name     print a name instead of a number, for -ugG

  -r, --real     print the real ID instead of the effective ID, with -ugG

  -u, --user     print only the effective user ID

  -z, --zero     delimit entries with NUL characters, not whitespace;

                   not permitted in default format

      --help     display this help and exit

      --version  output version information and exit

Without any OPTION, print some useful set of identified information.

3、su: switch user

登录式切换:会通过读取目标用户的配置文件重新初始化

su - USERNAME

su -l USERNAME


非登录式切换:不会通过读取目标用户的配置文件重新初始化

su USERNAME


注意:管理员切换其他用户时无需密码,非管理员则需给出目标用户密码。


[root@promote ~]# su - centos  -c 'whoami'    //不实际切换用户,仅以指定用户执行命令

centos

[root@promote ~]# whoami

root

[root@promote ~]#

4、chsh: 修改shell

5、finger:查询用户信息

6、whoami

7、pwck:检查用户的文件是否正常

8、grpck:检查组文件是否有异常。


八、文件权限

1、文件权限介绍:

判断文件的权限,首先判断进程的属主与文件属主是否相同:如果相同,则应用属主权限;否则,检查进程的属主是否属于文件的属组:如果是,则应用属组权限,否则应用其他权限。

[root@promote ~]# ls -l /etc/passwd

-rw-r--r--. 1 root root 3361 Nov 28 20:45 /etc/passwd

[root@promote ~]#


rw-r--r--:

左三位:属主(ower)权限;中三位:属组(group)权限;右三位:定义other权限

权限文件目录备注

r:read,读权限

可获取文件的数据

可使用ls命令获取其下所有文件列表

w:write,写权限可修改文件的数据可修改此目录下的文件列表,即创建或删除文件
x:excute,执行权限可将此文件运行为进程可cd至此目录中,且可使用ls -l获取文件的详细信息

rwx对应八进制数字分别是:4,2,1。(由于rwx在三个位置只能是这三个值,因此可以对应于0,1,换算成八进制,即,4,2,1)


三类用户:

u:属主

g:属组

o:其他

a:所有


1.1、文件特殊权限:

特殊情况:

[root@promote ~]# ls -l /bin/passwd

-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /bin/passwd

[root@promote ~]# ls -ld /tmp/

drwxrwxrwt. 16 root root 4096 Dec 17 20:03 /tmp/

[root@promote ~]#


特殊权限:SUID,SGID,STICKY

SUID:默认情况下:用户发起的进程,进程的属主是其发起者;因此,其以发起者的身份在运行;

用户运行某程序时,如果此程序拥有SUID权限,那么程序运行为进程时,其属主不是发起者,而是程序文件自己的属主;

管理文件的SUID权限: chmod u+s 文件或chmod u-s 文件

注意:s位为属的执行权限位,如果属主原本有执行权限,显示为小s;如果属主原本没有执行权限,则显示大S。


SGID:当目录属组有写权限,且有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组。

一般用于目录上,展示于属组的权限位;

管理文件的SUID权限: chmod g+s 文件或chmod g-s 文件

注意:s位为属的执行权限位,如果属组原本有执行权限,显示为小s;如果属组原本没有执行权限,则显示大S。


STICKY:用于属组或全局可写的目录,组内的所有用户或系统上的所有用户对在此目录中都能创建新文件或删除所有的已有文件;如果此类目录设置了STICKY权限位,则每个用户能创建新文件,且只能删除自己的文件。

管理文件的STICKY权限: chmod o+t 文件或chmod o-t 文件

注意:t位为其他属组的执行权限位,如果其他属组原本有执行权限,显示为小t;如果其他属组原本没有执行权限,则显示大T。


系统上的/tmp和/var/tmp目录默认均有STICKY权限;


管理特殊权限的另一种方法:基于八进制:

chmod 1777 文件名:1表示特殊权限位; 顺序:SUID SGID STICKY(4,2,1)

SUID SGID STICKY

0           0          1                1

0           1          0                2

0           1          1                3

1           0           0               4

1           0           1               5

1           1           0               6

1           1           1               7



2、权限管理命令:chmod

chmod [OPTION]... MODE[,MODE]... FILE...

MODE表示有三种:

  1. 赋权表示法:直接操作一类用户的所有权限位。u= ,g= ,o= ,或ug= ,或a= ,      如:chmod g=rw  文件名   //如果要同时赋予属主属组,则需用逗号隔开

  2. 授权表示法:直接操作一类用的一个权限位:r,w,x;u+或u-,其他同理   //当+w时,只对属主有效,因为全局+w太危险。

  3. 八进制权限法:如chmod ### 文件名   


chmod [OPTION]... OCTAL-MODE FILE...


chmod [OPTION]... --reference=RFILE FILE...

[root@promote ~]# ls /var/log/messages -l

-rw-------. 1 root root 416527 Nov 30 21:58 /var/log/messages

[root@promote ~]# chmod --reference=/var/log/messages /tmp/fstab        //fstab文件引用messages的权限。

[root@promote ~]# ll /tmp/fstab

-rw-------. 1 root root 465 Nov 30 21:55 /tmp/fstab

[root@promote ~]#


OPTION

-R:递归修改权限(对文件没有什么意义。对目录来说:如果不加-R,则只修改当前目录权限,若加-R表示递归修改目录下的目录和文件的权限。慎用。一般不建议使用


3、从属关系管理命令:chown、chgrp

chown:修改属主属组

 chown [OPTION]... [OWNER][:[GROUP]] FILE...

 chown [OPTION]... --reference=RFILE FILE...

OPTION

-R:递归修改。


chgrp:只能修改属组。

 chgrp [OPTION]... GROUP FILE...

 chgrp [OPTION]... --reference=RFILE FILE...


4、文件的权限反向掩码:umask(默认022)

文件:666-umask    //文件默认不应该有执行权限,如果有减去的结果有执行权限,则需要将其加1;

目录:777-umask


umask命令:

    #umask:查看当前umask

    #umask MASK:设置umask

注意:通过命令设置,仅对当前有效。


5、install命令:复制文件并设置属性(不能复制目录

       install [OPTION]... [-T] SOURCE DEST

       install [OPTION]... SOURCE... DIRECTORY

       install [OPTION]... -t DIRECTORY SOURCE...

       install [OPTION]... -d DIRECTORY...    //创建目录

[root@promote fedora]# install -d hello

[root@promote fedora]# ls  -dl ./hello/

drwxr-xr-x. 2 root root 6 Dec  3 11:19 ./hello/

[root@promote fedora]#

OPTION:

-m:设定目标文件权限,默认为755

-o:设定目标文件的属主

-g:设定目标文件属组


6、mktemp:创建临时文件或目录

 mktemp [OPTION]... [TEMPLATE]

OPTION:

-d:创建临时目录

-u:创建但是不存在(测试能不能创建)

注意:mktemp会将创建的临时文件名直接返回,因此直接通过命令引用保存。

如:

[root@promote fedora]# mktemp /tmp/123.XXX

/tmp/123.nAO

[root@promote fedora]# mktemp /tmp/123.XXX

/tmp/123.wQE

[root@promote fedora]# mktemp /tmp/123.XXX

/tmp/123.OqZ

[root@promote fedora]# myfile=$(mktemp /tmp/123.XXX)

[root@promote fedora]# echo $myfile

/tmp/123.FAI


九、facl:file access control lists :文件访问控制列表;

    文件的额外赋权机制:在原来的u、g、o之外,另一种让普通用户能控制赋权给另外的用户或组的赋权机制。

1、查看文件facl权限:

  getfacl [-aceEsRLPtpndvh] file ...

  getfacl [-aceEsRLPtpndvh] -

如:

[root@promote tmp]# getfacl  a.fedora

# file: a.fedora

# owner: fedora

# group: fedora

user::rw-      //格式为:user:用户名:权限;如果用户名显示为空,则是默认文件属主;

group::rw-     //格式为:group:组名:权限;如果组名显示为空,则是默认文件属组;

other::r--

[root@promote tmp]#





2、设置文件facl权限:

 setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...

 setfacl --restore=file


如:

[root@promote tmp]# setfacl -m u:centos:rw a.fedora    //设置用户centos对a.fedora文件有读写权限;

[root@promote tmp]# getfacl  a.fedora

# file: a.fedora

# owner: fedora

# group: fedora

user::rw-                   //原来属主权限

user:centos:rw-        //新增属主权限

group::rw-

mask::rw-

other::r--

[root@promote tmp]#



[root@promote tmp]# setfacl -m g:centos:rw a.fedora   //设置组centos对a.fedora文件有读写权限;

[root@promote tmp]# getfacl a.fedora

# file: a.fedora

# owner: fedora

# group: fedora

user::rw-

user:centos:rw-

group::rw-               //原来属组权限

group:centos:rw-    //新增属组权限

mask::rw-

other::r--

[root@promote tmp]#



[root@promote tmp]# setfacl -m g:centos:--- a.fedora //设置centos组用户没有任何权限;



虽然增加了文件的facl权限,但是文件的属主、属组不变;

[root@promote tmp]# ll a.fedora

-rw-rw-r--+ 1 fedora fedora 0 Dec 18 12:44 a.fedora

[root@promote tmp]#


3、撤销文件facl权限:

setfacl -x u:USERNAME  FILE.......

setfacl -x g:GROUPNAME   FILE.......

注意:先检查文件用户的权限,在检查文件是否有facl设置;检查文件属组的权限,在检查文件组facl的权限,在检查其他;