SUID:(set uid)只能限定在二进制可执行程序上面。
功能:程序运行时的权限从执行者变更成程序所有者的权限
SUID属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。使用”ls -l” 或者”ll” 命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的”s”,就表明该执行文件拥有SUID属性
[root@song ~]# su - song
Last login: Wed May 10 21:22:45 CST 2019 on pts/0
[song@song ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
现在赋予文件passwd特殊权限suid
[root@song ~]# chmod u+s `which cat` [root@song ~]# ls -l `which cat` -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/cat
再次切换普通用户执行cat,可以发现可以查看该文件了
[song@song ~]$ cat /etc/shadow
root:$6$9XC/lEl96ujGI9c8$E55wvS9amcKFj7/0HmblYg0j28FHwfymL.mQliqQNSElicrQKkZLurkSvVAv6NXM/KiJWFYV8NAh8imLiFedb/::0:99999:7:::
bin:*:17632:0:99999:7:::
daemon:*:17632:0:99999:7:::
adm:*:17632:0:99999:7:::
SGID:(set group)不仅能给二进制可执行程序设置,也可以对目录设置
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会,继承上级目录的所属组
[root@ken ~]# mkdir test1 [root@ken ~]# ls -ld test1 drwxr-xr-x 2 root root 6 Feb 27 22:38 test1 [root@ken ~]# chmod g+s test1 [root@ken ~]# chown :ken test1 [root@ken ~]# touch test1/test.txt [root@ken ~]# ls -ls test1/test.txt 0 -rw-r--r-- 1 root ken 0 Feb 27 22:40 test1/test.txt
对于设置sbit权限的文件,用户只能删除自己创建的文件,无法删除其他用户的文件
对目录/tmp添加sbit权限,删除文件的时候显示拒绝操作
[root@ken ~]# chmod o+t /tmp [root@ken ~]# useradd t1 [root@ken ~]# useradd t2 [root@ken ~]# su - t1 Last login: Thu Mar 14 14:04:37 CST 2019 on pts/1 [t1@ken ~]$ touch /tmp/t1 [t1@ken ~]$ exit logout [root@ken ~]# su - t2 Last login: Thu Mar 14 14:03:59 CST 2019 on pts/1 [t2@ken ~]$ touch /tmp/t2 [t2@ken ~]$ rm -rf /tmp/t1 rm: cannot remove ‘/tmp/t1’: Operation not permitted
去掉sbit权限之后,再次删除即可
[root@ken ~]# chmod o-t /tmp
[root@ken ~]# su - t2
Last login: Fri Mar 15 12:49:54 CST 2019 on pts/4
[t2@ken ~]$ rm -rf /tmp/t1
扩展ACL :access control list
例:设置用户ken对文件a.txt拥有的rwx权限 ,ken不属于a.txt的所属主和组,ken是other。怎么做?
-m表示设置的意思
[root@ken ~]# setfacl -m u:ken:rwx a.txt
查看扩展权限getfacl
[root@ken ~]# getfacl a.txt # file: a.txt # owner: root # group: root user::rw- user:ken:rwx group::r-- mask::rwx other::r--
去除权限
[root@ken ~]# setfacl -R -m u:ken:rw- testdirectory/ #-R一定要在-m前面,表示目录下所有文件
[root@ken ~]# setfacl -x u:ken /tmp/a.txt # 去掉单个权限
[root@ken ~]# setfacl -b /tmp/a.txt # 去掉所有acl权限