文件的特殊权限
SUID:s出现在文件所有者x权限上(对应数字4)
- SUID只能用于二进制可执行文件,对目录无效;
- 执行者若具有该文件的x权限,则将具有文件所有者的权限
- 权限只有在文件执行时有效,执行完毕不再拥有所有者权限;
例:
[root@xuegod63 ~]# ll /usr/bin/less -rwxr-xr-x. 1 root root 192040 5月 11 2019 /usr/bin/less [root@xuegod63 ~]# su - es [es@xuegod63 ~]$ less /etc/shadow /etc/shadow: 权限不够 [es@xuegod63 ~]$ su - root 密码: [root@xuegod63 ~]# chmod u+s /usr/bin/less [root@xuegod63 ~]# ll /usr/bin/less -rwsr-xr-x. 1 root root 192040 5月 11 2019 /usr/bin/less [root@xuegod63 ~]# su - es [es@xuegod63 ~]$ less /etc/shadow root:$6$bLdXTaHCvvdI75zR$W2kcXI2je3XVHwwV9EOFANl09wTjJuMGf.udCN9tw/iTLDylncPC2h79o8SO/yncmHq8uZ9xj6aP.yF1/7mYZ1:18479:0:99999:7::: bin:*:18078:0:99999:7::: daemon:*:18078:0:99999:7::: |
SGID:s出现在文件所属组的x权限上(对应数字2)
- SGID和SUID不同,可以用于目录
- 使用者若有此目录的x,w权限,则可进入和修改此目录
- 在设置了 SGID 权限的目录下建立文件时,新创建的文件的所属组会,继承上级目录的所属组;
例:
[root@xuegod63 ~]# mkdir test [root@xuegod63 ~]# ll -d test drwxr-xr-x 2 root root 6 8月 6 15:24 test [root@xuegod63 ~]# chmod g+s test [root@xuegod63 ~]# !ll ll -d test drwxr-sr-x 2 root root 6 8月 6 15:24 test [root@xuegod63 ~]# chown :bin test [root@xuegod63 ~]# touch test/a.txt [root@xuegod63 ~]# ll test/a.txt -rw-r--r-- 1 root bin 0 8月 6 15:26 test/a.txt |
Stickybit:t出现在文件其他用户的x权限上(对应数字1)
- 粘滞位权限是针对目录的,对文件无效,也叫防删除位
- 使用者在该目录下,仅自己和root可删除新建的目录或文件;
限定:只作用于目录
功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除。
[root@xuegod63 tmp]# mkdir aaa [root@xuegod63 tmp]# ll -d aaa drwxr-xr-x 2 root root 6 8月 6 15:35 aaa [root@xuegod63 tmp]# chmod o+t aaa [root@xuegod63 tmp]# ll -d aaa drwxr-xr-t 2 root root 6 8月 6 15:35 aaa [root@xuegod63 tmp]# su - es [es@xuegod63 ~]$ rm -rf /tmp/aaa rm: 无法删除'/tmp/aaa': 不允许的操作 [es@xuegod63 ~]$ exit [root@xuegod63 tmp]# rm -rf aaa #删除成功 |
文件扩展权限ACL
ACL(Access Control List):访问控制列表
ACL可以针对单一用户、单一文件或目录来进行r、w、x的权限设置,对于需要特殊权限的使用状况非常有帮助;
命令:
getfacl 用于查询
setfacl 用于设置文件的ACL规则,添加和删除组、用户的权限
• -m 添加或者修改对象的acl实体
• -x 删除对象的acl实体
• -d 设置default acl
• -b 删除所有扩展acl实体
例1:设置用户user1对文件a.txt拥有的rwx权限,user1不属于a.txt的所属主和组,user1 是 other。怎么做?
[root@xuegod63 ~]# useradd user1 [root@xuegod63 ~]# getfacl /tmp/a.txt getfacl: Removing leading '/' from absolute path names # file: tmp/a.txt # owner: root # group: root user::rw- group::r-- mask::r-- other::r-- [root@xuegod63 ~]# setfacl -m u:user1:rwx /tmp/a.txt [root@xuegod63 ~]# getfacl /tmp/a.txt getfacl: Removing leading '/' from absolute path names # file: tmp/a.txt # owner: root # group: root user::rw- user:user1:rwx group::r-- mask::rwx other::r-- |
例2:给目录/opt/gr下所有文件都加扩展权限;
[root@xuegod63 opt]# setfacl -R -m u:user1:rw- gr [root@xuegod63 opt]# getfacl gr/test/ # file: gr/test/ # owner: root # group: root user::rwx user:user1:rw- group::r-x mask::rwx other::r-x
[root@xuegod63 opt]# getfacl gr/ # file: gr/ # owner: root # group: root user::rwx user:user1:rw- group::r-x mask::rwx |