linux基础教程之特殊权限SUID、SGID和SBIT,linux教程系统特殊权限

前言
对于linux中文件或目录的权限,应该都知道普通的rwx权限 。Linux的权限不是很细致,只有RWX三种

  • r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限 。
  • w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限;对目录来说,具有新建,删除,修改,移动目录内文件的权限 。
  • x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限 。
1、目录的只读访问不允许使用cd进入目录,必须要有执行的权限才能进入 。
2、只有执行权限只能进入目录,不能看到目录下的内容,要想看到目录下的文件名和目录名,需要可读权限 。
3、一个文件能不能被删除,主要看该文件所在的目录对用户是否具有写权限,如果目录对用户没有写权限,则该目录下的所有文件都不能被删除,文件所有者除外
4、目录的w位不设置,即使你拥有目录中某文件的w权限也不能写该文件
我们先看看下面两个的权限是什么
linux基础教程之特殊权限SUID、SGID和SBIT,linux教程系统特殊权限



linux基础教程之特殊权限SUID、SGID和SBIT,linux教程系统特殊权限


非常奇怪,/tmp目录和 passwd文件的权限怎么怪怪的,怎么有s和t权限呢 。看了下面的内容你就明白了 。
1 SUID
当s出现在文件拥有者的x权限上时,如我们上面看到的/usr/bin/passwd这个文件的权限时-rwsr-xr-x,此时就被称为SET UID简称SUID.SUID对于一个文件有什么限制和功能呢?
SUID权限仅对二进制可执行文件有效
执行者对于该文件具有x的权限
本权限仅在执行该文件的过程中有效
执行者将具有该文件拥有者的权限
例如普通用户用passwd修改自己的命令,实际上最终更改的是/etc/passwd文件. 此文件时用户管理配置文件,只有root权限才能更改 。
linux基础教程之特殊权限SUID、SGID和SBIT,linux教程系统特殊权限


既然是root用户才拥有此权限,为什么我们可以通过passwd命令来修改密码呢,那这就要归功于passwd设置了suid权限位了 。
linux基础教程之特殊权限SUID、SGID和SBIT,linux教程系统特殊权限


此时普通用户通过执行passwd命令,临时拥有root权限,间接的修改/etc/passwd,以达到修改自己密码的权限 。
2 SGID
当s出现在目录或文件所属群的x权限上时,此时就称为SET GID简称SGID,那SGID对文件和目录分部有哪些功能呢?
2.1 SGID对目录
使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录
使用者在此目录下的群组将会变成该目录的群组
【linux基础教程之特殊权限SUID、SGID和SBIT,linux教程系统特殊权限】若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同
2.2 SGID对文件
SGID 对二进制可执行文件有效
程式执行者对于该文件来说,需具备 x 的权限
执行者在执行的过程中将会获得该文件群组的支援(用于改文件群组的权限)
3 SBIT
当s出现在目录其他用户的x权限上时,此时就称为Sticky Bit简称SBIT,那SBIT有哪些限制和作用呢?
仅对目录有效,对文件无效
当使用者在该目录下建立文件或目录时(有权限的情况下),仅自己与 root 才有权力删除新建的目录或文件
我们知道/tmp目录是这样的权限 。
linux基础教程之特殊权限SUID、SGID和SBIT,linux教程系统特殊权限


现在我们来验证下,先用root账号在tmp文件中创建一个文件test,然后用openstack(其他账号)进入该目录,删除test文件,看看发生什么情况

推荐阅读