linux附加权限(特殊权限)SET UID /GID/BIT详解

一:Set UID
1:设置对象:可执行文件.
设置完成后,此文件的使用者在使用此文件的过程中会临时获得该文件的所有者的身份及部分权限.
2:设置位置:Set UID附加在文件所有者的x权限位上
3:设置后的变化:此文件的所有者的x权限位上会变为s.
4:命令: chmod u+s 可执行文件

下面是一个简单的例子:

[root@server ~]# which mkdir
/usr/bin/mkdir
#mkdir命令的二进制文件为/usr/bin/mkdir

root@server ~]# ls -l /usr/bin/mkdir
-rwxr-xr-x. 1 root root 79712 1月  25 2014 /usr/bin/mkdir
[root@server ~]# chmod u+s /usr/bin/mkdir
#修改文件权限,附加Set UID

[root@server ~]# ls -l /usr/bin/mkdir
-rwsr-xr-x. 1 root root 79712 1月  25 2014 /usr/bin/mkdir
#查看文件所有者权限处X位已变为s.此时当其他用户使用mkdir命令时会拥有此文件所有者的身份和部分权限.

[root@server ~]# useradd tom
[root@server ~]# su - tom
[tom@student0 ~]$ /usr/bin/mkdir /opt/UID
[tom@student0 ~]$ ls -ld /opt/UID
drwxrwxr-x. 2 root tom 6 Sep 10 19:46 /opt/UID
#tom新建的目录的所有者为root.


二:Set Gid
1:设置对象:目录
设置完成后,Set GID可以使目录下新增的文档自动设
置与父目录相同的属组,让新增的子文档,自动继承父目录的所属组
2:设置位置:Set GID附加在目录所属组的x权限位上
3:设置后的变化:此目录的所属组的x权限位上会变为s.
4:命令: chmod g+s 目录

下面是一个简单的例子:

root@server ~]# mkdir /world
#根目录下创建一个目录world

[root@server ~]# ls -ld /world
drwxr-xr-x. 2 root root 6 9月  10 20:20 /world
[root@server ~]# groupadd renshibu
[root@server ~]# chown :renshibu /world
[root@server ~]# ls -ld /world
drwxr-xr-x. 2 root renshibu 6 9月  10 20:20 /world
#修改此文件的所属组

[root@server ~]# chmod g+s /world
#附加Set Gid权限.

[root@server ~]# ls -ld /world
drwxr-sr-x. 2 root renshibu 6 9月  10 20:20 /world
#此时文件所属组x权限位已变位s

[root@server ~]# mkdir -p /world/aa/bb/cc
#递归创建子目录

[root@server ~]# ls -ld /world/aa
drwxr-sr-x. 3 root renshibu 15 9月  10 20:25 /world/aa
[root@server ~]# ls -ld /world/aa/bb
drwxr-sr-x. 3 root renshibu 15 9月  10 20:25 /world/aa/bb
[root@server ~]# ls -ld /world/aa/bb/cc
drwxr-sr-x. 2 root renshibu 6 9月  10 20:25 /world/aa/bb/cc
#这里看到/world下的子目录已经自动继承了/world目录的所属组.

三:Sticky Bit
1:设置对象:开放W权限的目录
可以阻止用户滥用 w 写入权限(禁止操作别人的文档)
2设置位置:Sticky Bit 附加在文件其他人的x权限位上
3:设置后的变化:此目录的其他人的x权限位上会变为t
4:命令: chmod o+t 目录

下面时一个简单的例子:

[root@server ~]# mkdir /public
[root@server ~]# ls -ld /public
drwxr-xr-x. 2 root root 6 9月  10 20:43 /public
[root@server ~]# chmod 777 /public
[root@server ~]# ls -ld /public
drwxrwxrwx. 2 root root 6 9月  10 20:43 /public
#创建一个公共目录,所有人都可以在此目录下进行操作,满权限

[root@server ~]# su - tom
[tom@student0 ~]$ touch /public/tom.txt
[tom@student0 ~]$ exit
logout
[root@server ~]# su - lily
[lily@student0 ~]$ touch /public/lily.txt
[lily@student0 ~]$ ls /public
lily.txt  tom.txt
# tom 和lily 都各自创建了一个属于自己的文件

[lily@student0 ~]$ rm -rf /public/tom.txt
[lily@student0 ~]$ ls /public
lily.txt
#此时任何人都可以修改,删除此公共目录的任何文件或目录,当然也包括别人创建的文件.tom的文件被lily删除.

[lily@student0 ~]$ exit
logout
[root@server ~]# chmod o+t /public
[root@server ~]# ls -ld /public
drwxrwxrwt. 2 root root 21 9月  10 20:48 /public
#修改Sticky Bit 权限,注意其他人x权限位上变成了t

[root@server ~]# su - tom
[tom@student0 ~]$ touch /public/tom001
[tom@student0 ~]$ ls /public
lily.txt  tom001
[tom@student0 ~]$ rm -rf /public/lily.txt
rm: cannot remove ‘/public/lily.txt’: Operation not permitted
#此时tom想要删除lily创建的文件,发现自己已经没有权限了.

[tom@student0 ~]$ exit
logout
[root@server ~]# su - lily
[lily@student0 ~]$ ls /public
lily.txt  tom001
[lily@student0 ~]$ rm -rf /public/tom001
rm: cannot remove ‘/public/tom001’: Operation not permitted
#同样,此时lily也没有权限对tom创建的文件进行操作,只能操作自己创建的文件.


猜你喜欢

转载自blog.csdn.net/weixin_42104231/article/details/82594798