特殊权限的设置
基本文件权限见上文:http://blog.csdn.net/gui951753/article/details/79078682
特殊权限:SUID:当对一个可执行的二进制文件作用了suid权限之后,任何人在执行该文件时临时拥有其所属人的权限。
SGID:当对一个可执行的二进制文件作用了sgid权限之后,任何人在执行该文件时临时拥有其所属组的权限。
当对于一个目录作用了sgid权限之后,任何人在该目录下创建的文件的所属组与该目录的所属组相同。
Sticky:当对于一个目录作用了sticky权限之后,该目录下的文件仅其文件的所属人,或目录的所属人及root才能删除。
举例,当我们使用普通用户执行 liubei,passwd 这条命令是能够成功执行的,我们知道passwd的实质是修改了/etc/shadow文件,进而修改了密码,但是当我们查询这个文件的权限的时候会发现这个问题,这个文件普通用户是没有任何权限的。那么普通用户liubei是如何做到了修改密码这个事情的呢,我们通过查询/bin/passwd命令发现了秘密。
图一
图二
在图二中我们能清晰看到 passwd这条二进制文件命令的权限中,多出了一个东西,-s,这就是上文中所提到的suid,执行这条命令的普通用户,可以暂时拥有其所属组的权限。
如何实现设置这些权限:
设置suid/取消suid
chmod u+s file
chmod u-s file
设置sgid/取消sgid
chmod g+s dir
chmod g-s dir
设置sticky
chmod o+t dir
chmod o-t dir
上篇博客中提出文件权限有三位,那么在知道特殊权限之后,我们应该知道,当权限用数字表示的时候,实际上有四位:
chmod u+s 4xxx
chmod g+s 2xxx
chmod o+t 1xxx
即有suid又有sgid 6xxx
即有suid又有sticky 5xxx
即有sgid又有Sticky 3xxx
ACL:
一旦开始设置acl,那么原有的权限属性不可更改,只有取消acl才能更改所属人,所属组和其他人的权限信息。在acl和原有的权限属性之间就有那么一种优先级: owner > acl user > group 与 acl group 谁的权限多,谁优先 > other
设置acl,利用setfacl命令来设置facl,下面对setfacl的命令格式进行解释
例:setfacl -m u:wang:rwx file|directory
- -m 表示修改ACL。你可以增加新的,或修改存在的ACL
- u: 表示用户。你可以使用 g 来设置组权限
- :rwx 需要设置的权限。
- 最后是文件或者说目录
mask 阈值的设定
setfacl -m m:r-x file |directory 设置上限阀值 ,所有超过mask显示的阈值的权限都会被屏蔽,mask掩码是动态更新的,
设置acl后,ll显示的组信息其实是mask信息,原有的组信息不可改变,也不会显示(可用getfacl显示完整的组权限)
每增加一条acl,mask就会更新,并且取所有的权限的并集,保证所有acl都有效 (所以一般情况下往往为了临时性的目的进行设置阈值)
取消acl:
setfacl -x u:wang file |directory 删除特定的某条acl
setfacm -b file |directory 清除acl属性,即清楚所有acl
setfacl -k file |directory 清除默认权限
查看acl:
getfacl file|directory 查看某个文件或者某个目录的acl值
acl权限的备份与还原
acl权限的备份及还原
getfacl file |directory > acl.txt
setfacl --restore acl.txt