目录
[③chgrp 命令](#③chgrp 命令)
一、基本知识

- r表示读权限:针对文件可以查看文件内容;针对文件夹,可以查看文件夹内容,如ls命令
- w表示写权限:针对文件表示可以修改此文件;针对文件夹,可以在文件夹内:创建、删除、改名等操作
- x表示执行权限:针对文件表示可以将文件作为程序执行;针对文件夹,表示可以更改工作目录到此文件夹,即cd进入

二、查看/修改权限控制
①chmod命令
1.功能
修改文件或目录的权限。只有文件主或超级用户root才有权用chmod改变文件或目录的存取权限。通过chmod修改文件或目录权限有两种方法。
(1)文字设定法
chmod [who] [操作符号] [权限] 文件或目录名
使用字母和操作符表达式来修改或设定文件的访问权限。具体描述如表:

例1:取消/mnt/bb.txt所有者用户写和执行的权限,同组用户执行的权限。
root@localhost mnt\]# ll drwxrwxrwx. 2 root root 4096 10月 24 17:09 b -rw-rw-rw-. 1 root root 0 10月 24 17:09 bb.txt 例2:将/root/b目录中的所有文件权限设置为所有人都可读取及写入。 \[root@localhost \~\]# chmod a=rw b \[root@localhost \~\]# ll drw-rw-rw-. 2 root root 4096 9月 19 23:04 b
(2)数值设定法
chmod [-R] <八进制模式> <文件或目录名>
数字表示法是指将读取(r)、写入(W)和执行权限(x)分别使用"0"或"1"的二进制数来表示,有权限的表示为1,没有的权限就表示为0,然后转化为八进制数。如表:

例1:为文件/root/bb.txt设置权限:赋予所有者和组群成员读取和写入的权限,而其他人只有读取权限。则应该将权限设为"rw-rw-r--",而该权限的数字表示法为664。
root@localhost \~\]# chmod 664 bb.txt \[root@localhost \~\]# ll -rw-rw-r--. 1 root root 0 9月 19 23:04 bb.txt
2.其他
我们可以使用chmod命令,修改文件、文件夹的权限信息。
注意,只有文件、文件夹的所属用户或root用户可以修改。

权限的数字序号
权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。 数字的细节如下:r记为4,w记为2,x记为1,可以有:
- 0:无任何权限,即 ---
- 1:仅有x权限,即 --x
- 2:仅有w权限,即 -w-
- 3:有w和x权限,即 -wx
- 4:仅有r权限,即 r--
- 5:有r和x权限,即 r-x
- 6:有r和w权限,即 rw-
- 7:有全部权限,即 rwx
所以751表示: rwx(7) r-x(5) --x(1)

②chown命令
1.语法
chown [选项] 属主:属组 文件或目录列表
或chown [选项] 属主.属组 文件或目录列表
2.功能
修改文件的所有者或者所属组群。只有root用户才能改变文件的所有者,而只有root用户或所有者才能改变文件所属的组。用户和属组可以是名称也可以是UID或GID。多个文件之间用空格分隔。
例1:修改/root/b目录的所有者修改为u1用户。
root@localhost \~\]# ll drw-rw-rw-. 2 root root 4096 9月 19 23:04 b \[root@localhost \~\]# chown u1 b \[root@localhost \~\]# ll drw-rw-rw-. 2 u1 root 4096 9月 19 23:04 b 例2:同时修改/root/bb.txt文件的所有者为u1和所属组为g1。 \[root@localhost \~\]# chown u1:g1 bb.txt \[root@localhost \~\]# ll -rw-rw-r--. 1 u1 g1 0 9月 19 23:04 bb.txt 例3:只修改/root/b目录的所属组为g1。 \[root@localhost \~\]# chown .g1 b \[root@localhost \~\]# ll drw-rw-rw-. 2 u1 g1 4096 9月 19 23:04 b
使用chown命令,可以修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行


③chgrp 命令
1.语法
chgrp [选项] 属组 文件或目录列表
2.功能
用来改变所属组
例1:修改/root/b目录的所属组为root。
root@localhost \~\]# chgrp root b \[root@localhost \~\]# ll drw-rw-rw-. 2 u1 root 4096 9月 19 23:04 b
三、ACL
FACL是访问控制列表(File Access Control Lists)的缩写,简称 ACL。可以针对任意指定的用户/组分配RWX权限。
Linux中ACL有两种类型:
- 存取 ACL(access ACLs):是对指定文件或目录的存取控制列表。
- 默认 ACL(default ACLs):只能和目录相关。若目录中的文件没有存取 ACL,就会使用该目录的默认 ACL。但是访问ACL的优先级更高。默认 ACL 是可选的。
1.Setfacl
①语法
setfacl [-bkdR] [{-m|-x} rules ] [files or directory ]
②功能
给文件或目录设置ACL功能。
③选项
- -x:删除文件或目录的ACL规则。
- -b:删除文件或目录的所有ACL规则。
- -k:删除文件或目录默认的ACL规则。
- -d:指定文件或目录默认的ACL规则。
- -test:测试模式,不会改变任何文件和目录的ACL.规则,操作后的ACL规则将被显示,
- -R:对目录进行递归操作。
④ACL规则(rules)的指定模式
- [d:]u:uid:perms --- 为指定的用户(使用 UID 或用户名)设置ACL权限
- [d:]g:gid:perms --- 为指定的组(使用 GID 或组名)设置ACL权限
- [d:]o:[:]perms --- 为其他用户设置ACL权限
- [d:]m:[:]perms --- 设置有效的访问掩码
其中,[d:]表示配置用户对文件或目录的默认的ACL,perms为权限r、w、x、-的组合。
例1: 授予用户lisa读的权限:setfacl -m u:lisa:r file
取消所有用户合所有组对file写的权限:setfacl -m m::rx file
删除staff组对file操作的权限:setfacl -x g:staff file
复制一个文件file1的acl到另一个文件file2上:getfacl file1 | setfacl --set-file=- file2
2.getfacl
①语法
getfacl [选项] [files or directory]
②功能
查看文件或目录的ACL。
(1)-d;显示默认的ACL。
(2)-R:显示目录及其子目录和文件的ACL。
例1:IT协会的学生需要创建/dzxx/test目录,该目录需要满足下列要求:
(1)g1组的用户对此目录有完全权限。
(2)u1对此目录有r-x权限。
(3)u2对此目录有r--权限。
root@localhost \~\]# mkdir -p /dzx/test 设置用户u1用户r-x权限 \[root@localhost \~\]# setfacl -m u:u1:rx /dzx/test/ 设置u2用户r--权限 \[root@localhost \~\]# setfacl -m u:u2:r /dzx/test/ 设置g1组所有权限 \[root@localhost \~\]# setfacl -m g:g1:rwx /dzx/test/ 查看acl信息 \[root@localhost \~\]# getfacl /dzx/test/ getfacl: Removing leading '/' from absolute path names # file: dzx/test/ # owner: root # group: root user::rwx user:u1:r-x user:u2:r-- group::r-x group:g1:rwx mask::rwx other::r-x