3-7 Linux中的特殊权限(1)

2021-04-27  本文已影响0人  捌千里路雲和月

文件的特殊权限 --- SUID SGID SBIT

当 s 出现在拥有者的 x 权限位置的时候,表示拥有者有SUID的权限

(Set UID)s 权限只能应用在二进制的可执行文件上。

当 s 出现在所属组的 x 权限位置的时候,表示所属组有SGID的权限

(Set GID)

当 t 出现在其他人的 x 权限位置的时候,表示其他人有SBIT的权限

(Sticky Bit)

SUID:临时获取文件拥有者的权限 ------ 只能针对文件 

SGID:可以作用于目录,也可以作用于文件。

    作用于文件:和SUID一样,所属组成员拥有组权限

    作用于目录:继承父目录,子目录会不停的继承

SBIT:只有文件的拥有者,才能删除、修改该目录下的文件。只能在其他人的位置修改。


1、SUID:临时获取文件拥有者的权限 ------ 只能针对文件

如:/usr/bin/passwd 文件,passwd 这个文件记录了用户的密码信息。它的拥有者是 root,拥有者的权限是 rws 。单纯从权限来看只有root具备 w 写的权限,其他人不具备写的权限。但是,为了能够让其他用户可以修改自己的密码,s 权限在这里起到了完成这项特殊任务的作用。当其他用户执行 passwd 这个程序的时候,相当于临时借用了 root 权限来完成密码修改的操作。

tips:s 权限的设置只针对可执行文件。设置 s 权限必须是有 x 可执行权限为前提,不然即便设置了 s 权限,它也会显示为大写 S。大写 S 是没有 x 可执行权限的意思。

例:

红色标注:新建一个 test.exe 文件,权限为 -rw-r--r-- (此处用 exe 后缀只为识别可执行文件,实际上Linux 不根据扩展名判断文件类型,而是根据文件的内容来判断。所以扩展名的作用是帮助人来识别文件)。

黄色标注:通过 chmod u+s test.exe 为拥有者增加 s 权限,实际上由于原来并没有 x 可执行权限,所以会以大 S 显示出来。大 S 表示没有 x 执行权限。

蓝色标注:chmod u+x test.exe 为拥有者增加 x 权限,有了 x 权限的基础上再 ll 查询文件详情,原来拥有者权限 rwS 变为了 rws。这样 s 权限才生效。可以理解为有 x 权限的前提下 s 权限才生效。

绿色标注:为所属组用户和其他人都赋予 x 权限,才能有执行文件的权限。


2、SGID:临时获取文件所属组的权限  

SGID:可以作用于目录,也可以作用于文件。

    作用于文件:和SUID一样,可以临时获取所属组的权限。

    作用于目录:子目录会不停的继承父目录的 s 权限。

子目录继承父目录的 s 权限演示。

例:创建 group 和 demo 目录,默认所属组权限都是 r-x 。

chmod g+s demo/ 把 demo目录的所属组权限改为 s 权限。

tmp/demo 目录下创建 demo.dir 目录 和 创建 demo.txt 文件,tmp/group 目录下创建 group.dir 和 创建 group.txt 文件。

通过 ll 查看两个目录下的详情,demo 目录下的 demo.dir 目录所属组权限是 r-s,demo.txt 文件的所属组是 r--。group 目录下的 group.dir 目录所属组权限是 r-x,group.txt 文件的所属组是    r--。

再次在 demo.dir 和 group.dir 目录下创建目录和文件,验证子目录会不停的继承父目录的 s 权限。

红色框块:demo.dir 目录下新建 demo1.dir 目录 和 创建 demo1.txt 文件。

黄色框块:group.dir 目录下新建 group1.dir 目录 和 创建 group1.txt 文件。

白色下划线:同时列出 demo.dir 和 group.dir 目录下详情。

蓝色下划线:demo1.dir 所属组权限是 r-s

绿色下划线:group1.dir 所属组权限是 r-x

demo1.dir 的父目录是 demo.dir,最上层的父目录是 demo。demo 的所属组权限是 r-s。 demo 的子目录权限继承了父目录 r-s。而,demo1.txt 和 group1.txt 文件的权限保持一直,证明文件不会继承目录的 s 权限。

由此可见,父目录有 s 权限,子目录都会继承父目录的 s 权限,而文件则不会继承 s 权限。


SBIT:只有文件的拥有者,才能删除、修改该目录下的文件(指重命名和剪切)root 除外。

例:/tmp/ 目录有 t 权限。tmp 目录是临时目录,通过 drwxrwxrwt 知道它的权限很大。任何用户都可以在这个目录上做增删改查的操作。为了用户之间不相互干预,t 权限的作用就是拥有者才有权限对自己的文件和目录作删除和修改。

红色框标注:user1 普通用户在 tmp 目录下创建 user1.dir 目录 和 user1.txt 文件

黄色下划线标注:切换到 user2 普通用户 rm 删除 user1 用户的 user1.dir 目录 和 user1.txt 文件,mv 剪切 user1 用户的 user1.dir 目录 和 user1.txt 文件 同样得到的回复都是 operation not permitted 不允许操作。

另外,用户是可以 cp 复制其他用户的文件。只是复制回来的文件拥有者权限变成了自己,自己对文件进行编辑后不改文件名是不能再次复制到 tmp 目录下。也就是不能覆盖掉原文件。从意义上看,也是防止修改原文件的一种措施。示例如下:

红色下划线:user2 用户 复制了 user1 用户的 user1.txt 到自己家目录。

黄色下划线:复制过来的文件,拥有者变了user2 用户

蓝色下划线:user2 用户 vim 编辑完 user1.txt 这个文件后,cp 复制回去 tmp 目录。被提示没有权限(防止覆盖)。

绿色下划线:重新把修改好的 user1.txt 通过重命名方式复制到 tmp 目录下成功。tmp 多了一个user2.txt 文件

从上述 SBIT 例子可以看出,t 权限目录下的文件只有拥有者能够对自己的文件或目录进行删改(指重命名和剪切)。


s 和 t 权限大小写之分?

数字法设置特殊权限 ?

欲知后事如何,请听下回分解!


上一篇下一篇

猜你喜欢

热点阅读