分享

linux文件的特殊权限

 庆亮trj21bcn0z 2017-11-21

1.SetUID的功能

  • 只有可以执行的二进制程序才能设定SUID权限,

  • 命令执行者必须丢该程序拥有x执行权限,

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

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

为什么要拥有这样的一个功能呢?

在Linux系统中每个普通用户都可以更改自己的密码,这是合理的设置,用户的信息保存在文件/etc/passwd中,用户的密码保存在文件/etc/shadow中,也就是说用户更改自己密码时是修改了/etc/shadow文件中的加密密码,但是,

-rw-r--r-- 1 root root 1787 Oct 27 2009 /etc/passwd

-r-------- 1 root root 1187 Oct 27 2009 /etc/shadow

/etc/passwd文件每个用户都有读权限但是只有root有写权限,/etc/shadow文件只有超级用户root有读写权限,也就是说普通用户对这两个文件都没有写权限无法写入新密码,为什么普通用户可以更改密码呢?

在linux系统中,passwd命令有一个特殊的权限标记s ,存在于文件所有者的权限位上。这是一类特殊的权限SetUID。

linux文件的特殊权限

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

linux文件的特殊权限

2. 怎么设定SetUID

chmod 4755 文件名,4代表SUID,原权限前面加4

chmod u+s 文件名

linux文件的特殊权限

3. 取消SetUID

chmod 755 文件名,直接把权限恢复为原来的

chmod u-s 文件名

linux文件的特殊权限

4. 注意事项

SetUID很危险,关键目录应该严格控制权限,比如“、”,“usr”等。

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

对系统中默认具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限。

5. SetGID针对文件的作用

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

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

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

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

比如:

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

执行用户user1对/usr/bin/locate命令用友执行权限,

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

命令结束,user1用户的组身份返回为user1组

6. SetGID针对目录的作用

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

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

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

设定:SetGID

chmod 2755 文件名 2代表SGID

chmod g+s 文件名

取消SetGID

chmod 755 文件名

chmod g-s 文件名

7. Sticky BIT粘着位

粘着位目前只针对目录有效

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

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

设置粘着位

chmod 1755 目录名

chmod o+t 目录名

取消粘着位

chmod 755 目录名

chmmod o-t 目录名

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多