特殊权限位用数值表示就是:suid=4;sgid=2;sticky=1。
特殊权限设置时,要放在普通权限的前面,如chmod 4777 /tmp/a.txt。
SUID占据所有者u的执行权限位时,u有x权限时表示s,u没有x权限时表示S。
SGID占据所属组g的执行权限位时,g有x权限时表示s,u没有x权限时表示S。
STICKY占据其他人o的执行权限位时,o有x权限时表示t,o没有x权限时表示T。
访问控制列表(Access Control List,ACL),又称存取控制串列,是使用以访问控制矩阵为基础的访问控制方法,每个对象对应一个串列主体。ACL描述每个对象各自的访问控制,并记录可对此对象进行访问的所有主体对象的权限。
ACL的主要功能:为了更好的管理用户权限,可以自由的设置用户的访问文件的权限,实行有效的管理。对某些组成或用户有特殊权限的设置。除了文件的所有者,所属组和其他人,可以对更多的用户设置权限。
CentOS7默认创建xfs和ext4文件系统具有ACL功能,而之前的版本,默认手工创建的ext4文件系统没有ACL功能,需要手动增加:tune2fs -o acl /dev/sd?
上面就是ACL生效的顺序,也就是权限优先级是从上往下的,所有者,自定义用户,所属主组,自定义组,其他人。且mask是个限定线,除了所有者和其他人,其余的都不能超过这个限定线。
2.getfaclgetfacl - 取得并显示文件的访问控制列表
getfacl [-aceEsRLPtpndvh] {file|-} ...
-a, --access:显示文件的ACL
-d, --default:仅显示默认的ACL
-c, --omit-header:不显示带有#的信息
-e, --all-effective:显示所有有效的权限
-E, --no-effective:显示无效的权限
-s, --skip-base:跳过只有基础词目的文件
-R, --recursive:递归
-L, --logical:logical walk, follow symbolic links
-P, --physical:physical walk, do not follow symbolic links
-t, --tabular:使用列表输出格式
-n, --numeric:打印数值形式的用户或组身份
-p, --absolute-names:不要剥去“/”在路径上
getfacl得到的显示如下:
The output format of getfacl is as follows: 1: # file: somedir/ 2: # owner: lisa 3: # group: staff 4: # flags: -s- 5: user::rwx 6: user:joe:rwx #effective:r-x 7: group::rwx #effective:r-x 8: group:cool:r-x 9: mask::r-x 10: other::r-x 11: default:user::rwx 12: default:user:joe:rwx #effective:r-x 13: default:group::r-x 14: default:mask::r-x 15: default:other::--- 3.setfaclsetfacl - 设置文件访问控制列表
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
-m, --modify=acl:修改当前文件的ACL
-M, --modify-file=file:读取acl_file的ACL来修改file的ACL
-x, --remove=acl:移除ACL权限
-X, --remove-file=file:读取acl_file的ACL来移除file的ACL
-b, --remove-all:移除所有ACL
-k, --remove-default:移除默认的ACL
--set=acl:设置ACL来代替当前的ACL
--set-file=file:从文件上读取ACL来进行设置
--mask:重新计算有效的mask值
-n, --no-mask:不重新计算有效的mask值
-d, --default:对所有新建立的文件都设置ACL
-R, --recursive:只对已经存在的文件进行设置ACL
-L, --logical:logical walk, follow symbolic links
-P, --physical:physical walk, do not follow symbolic links
--restore=file:恢复 ACLs (inverse of getfacl -R')--test:测试权限,ACL不被修改acl_spec:[d:] [u|g|o|m]:[uid|gid|]:[权限] ,d为default,m为mask。acl_file`:是带有ACL权限的文件
这里列些例子大家可以试试: