linux高级权限suid|sgid|sticky

来源:互联网 发布:java 自己实现线程池 编辑:程序博客网 时间:2024/06/07 22:38

文件权限管理之:高级权限

1.分析以下问题:
[root@w_hat ~]# ll /root/file1.txt
-rw-r–r–. 1 root root 0 Aug 4 16:13 /root/file1.txt
[sfj1@w_hat ~]$ cat /root/file1.txt
cat: /root/file1.txt: Permission denied

可以看到对于file1文件,其他人对于其有读取的权限,可是切换到其他人用户时,为什么会出现权限不够的问题呢?

大家都知道,passwd命令对于所有用户都是可以使用的,那么我们来看一下passwd和cat命令有什么区别呢?

这里写图片描述

大家可以明显看到,passwd命令文件是红色的,并且在其权限位置,出现了我们从未看到过的s权限。这又是什么?

这就是高级权限

高级权限的类型

suid 4
sgid 2
sticky 1

其实呢,对于设置权限来说,我们之前提到的777是不完全的,他真正的权限应该是0777

而第一位的0就是这里所说的高级权限

==示例1==

suid权限【普通用户可以通过suid提升一定的权力】
[root@w_hat ~]# chmod u+s /usr/bin/cat
[root@w_hat ~]# ll /root/file1.txt
-rw-r–r–. 1 root root 0 Aug 4 16:13 /root/file1.txt
[sfj1@w_hat ~]$ cat /root/file1.txt

可以发现,起初我们发现的问题解决了,可以通过cat命令看到/root/file1.txt的内容

这就是suid的作用:普通用户使用具有suid权限的命令,会获得此权限所有者的身份,换句话说等同于所有者在运行这条命令

==示例2==

sgid权限【新建文件继承目录的属组—-sgid权限只针对目录】
[root@w_hat ~]# mkdir /home/hr
[root@w_hat ~]# chgrp hr /home/hr/
[root@w_hat ~]# chmod g+s /home/hr
[root@w_hat ~]# ll -d /home/hr/
drwxr-sr-x. 2 root hr 4096 Dec 5 16:03 /home/hr/

[root@w_hat ~]# touch /home/hr/file9
[root@w_hat ~]# ll /home/hr/
-rw-r–r–. 1 root hr 0 Dec 5 16:03 file9

可以发现新建的文件继承了目录的属组,而不是root组

==示例3==

sticky权限【用户只能删除自己的文件—–该权限只针对目录】
[root@w_hat ~]# mkdir /home/dir1
[root@w_hat ~]# chmod 777 /home/dir1

user1在/home/dir1建立文件, user2尝试删除!

[root@w_hat ~]# chmod o+t /home/dir1
[root@w_hat ~]# ll -d /home/dir1
rwxrwxrwt 2 root root 4096 09-02 02:26 /home/dir1

谁可以删除:
root
文件的所有者
目录的所有者

原创粉丝点击