linux-文件特殊权限(SUID, SGID, SBIT)

1:SetUID的功能

只有可以执行的二进制程序才能设定SUID权限。(给其他文件设置没有意义),命令执行者要对该程序拥有x(执行)权限,命令执行者在执行该程序时获得该程序文件所有着的身份(在执行程序的过程中灵魂附体为文件的属主,相当于变身命令),SetUID权限指在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效。

passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码

在所有者的权限里面有s就是SUID权限,在所属组里面有s就是SGID权限,在其他人里面有s就是SBID

cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容

2:设定SetUID的方法

     4代表SUID,2表示SGID,1表示SBID    7表示SUID,SGID,SBID都有,chmod 4755 文件名; chmod u+s 文件名

如果使用chmod u+s test

扫描二维码关注公众号,回复: 10691304 查看本文章

s是大写的这是因为它出错了,因为SetUID的功能说明中强调命令执行者要对该程序有执行权限,所以会报错。

3:取消SetUID的方法

   使用chmod命令把文件的权限修为以前的。或着使用 chmod u-s 文件名来修改。

4:危险的SetUID

   最好不要随便修改。

5:SetGID针对文件的作用:

      只有可以执行的二进制程序才能设定SGID权限;命令执行者要对该程序拥有x(执行)权限;命令执行在执行程序的时候,组身份升级为该程序文件的属组,SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效。

使用locate命令来搜索文件所在位置(在tmp目录下创建的文件找不到),因为这个命令是在数据库下查找,所以速度快,但是使用之前要先使用updatedb来更新数据库。

/usr/bin/locate是可执行二进制程序,可以赋予SGID,执行用户yanglinux对/usr/bin/locate命令拥有执行权限,执行locate命令时,组身份会升级为slocate组,而slocate组队/var/lib/mlocate/mlocate.db数据库拥有r权限,所以普通用户可以使用locate命令查询mlocate.db数据库。命令结束yanglinux用户的组身份返回yanglinux组。

6:SetGID针对目录的作用(特殊之处SUID没有这个特征)

普通用户必须对此目录拥有r和x权限,才能进入此目录;普通用户在此目录中的有效组会变成此目录的属组;若普通用户对此目录拥有w权限,新建的文件的默认属组是这个目录的属组。

设置:chmod g+s 文件/目录 或着 chmod 2755 目录/文件名

删除:chmod g-s 文件/目录 或着 chmod 755 目录/文件名

7:SBIT(Sticky BIT)粘着位作用

粘着位目前只对目录有效;普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入有权限;如果没有粘着位,因为普通用户拥有w权限,所有可以删除此目录下所有文件,包括其特用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限也可以删除自己建立的文件,但是不能删除其他用户建立的文件。主要作用就是对于777权限的目录防止自己再该目录下创立的文件被其他用户删除。

设置:chmod 1755 目录名或着chmod o+t 目录名

删除:chmod 777 目录名或着 chmod o-t 目录名 

发布了148 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ab1605014317/article/details/105202187