[linux学习笔记] 文件特殊权限




一、SetUID

1、SetUID的功能

1)只有可以执行的二进制程序才能设定SUID权限;

2)命令执行者要对该程序拥有x(执行)权限;

3)命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主);

4)SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效;

5)passwd命令拥有SetUID权限,所有普通用户可以修改自己的密码,ll /usr/bin/passwd:可以看到passwd的权限是-rwsr-xr-x;

6)cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容,ll /bin/cat:可以看到cat的权限是-rwxr-xr-x;

2、设定SetUID的方法:4代表SUID

chmod 4755 文件名;

chmod u+s 文件名;

3、取消SetUID的方法

chmod 755 文件名;

chmod u-s 文件名;

4、危险的SetUID

1)关键目录应严格控制写权限。比如“/”、“/usr”等;

2)用户的密码设置要严格遵守密码三原则;

3)对系统中默认应该具有SetUID权限的文件制作一个列表,定时检查有没有列表之外的文件被设置了SetUID权限;

二、SetGID

1、SetGID针对文件的作用

1)只有可执行的二进制程序才能设置SGID权限;

2)命令执行者要对该程序拥有x(执行)权限;

3)命令执行在执行程序的时候,组身份升级为该程序文件的属组;

4)SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效;

 

例如locate

ll /usr/bin/locate:locate权限是-rwx--s--x

1)/usr/bin/locate是可执行二进制程序,可以赋予SGID;

2)执行用户rain对/usr/bin/locate命令拥有执行权限;

3)执行/usr/bin/locate命令时,组身份会升级为slocate组,而slocate组对/var/lib/mlocate/mlocate.db数据库拥有r权限,所以普通用户可以使用locate命令查询mlocate.db数据库;

4)命令结束,rain用户的组身份返回为rain组;

2、SetGID针对目录的作用

1)普通用户必须对此目录拥有r和x权限,才能进入此目录;

2)普通用户在此目录中的有效组会变成此目录的属组;

3)若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组;

3、设定SetGID:2代表SGID

chmod 2755 文件名;

chmod g+s 文件名;

4、取消SetGID

chmod 755 文件名;

chmod g-s 文件名;

三、Sticky BIT

1、SBIT粘着位作用

1)粘着位目前只对目录有效;

2)普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限;

3)如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户简历的文件,一单赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件;

2、设置与取消粘着位

1)设置粘着位:

chmod 1755 目录名

chmod o+t 目录名;

2)取消粘着位:

chmod 777 目录名;

chmod o-t 目录名;

标签: linux