Linux下的文件权限
前面我们提到了关于文件的三个重要权限,那就是r、w、x这三个读、写、可执行的权限,是不是文件系统只有这三个权限呢?答案当然是否定的,首先,我们来看看下面这两个文件的权限:
我们发现这两个文件出现了s和t这两个权限,并且还分别占据了/usr/bin/passwd中所有者权限中x权限的位置以及/tmp目录中其他人的可执行权限的位置。这些权限我们称之为特殊权限,这些特殊权限又有什么含义呢?
文件的特殊权限:SUID
SUID特殊权限又称为SetUID,它表示当s这个标志出现在文件所有者的x权限上时,此时就被称为Set UID,简称为SUID,那么它有什么特殊功能呢,我们来看看下面这幅图片:
如上图,lzh这个普通用户本来不具有对/usr/bin/passwd这个文件进行写入的能力,但当这个文件具有SUID这个人权限时,确可以更改自己用户的密码,相当于向文件中写入了数据,其实此时当lzh执行这个文件时,它所具有的不是它自己的权限,而是它的权限变成了root,它以root的身份执行的passwd文件。
下面是SUID使用注意事项:
- SUID只对二进制文件有效,对其他文件无效。
- 本权限仅在文件被执行的过程中有效。
SGID
下面我们来看看SGID这个特殊权限,当s标志在文件所有者的x权限上,则当前文件具有SGID这个权限,称为Set GID.与上面SUID这个特殊权限类似,当具有SGID这个特殊权限的文件被执行者执行时,程序执行者能获得该程序用户组的支持。它的使用也与SUID相同。
Sticky Bit
Sticky Bit称为粘滞位,它表示文件其他者的x权限上有t这个标志,目前粘滞位仅对目录有效,对其他文件无效,我们通过一副图片来看看他是怎么使用的:
当我们对/tmp目录设定了粘滞位这个特殊权限时,即使其他用户对该目录下的文件具有r,w,x权限,我们也不能用其他人的用户来删除该目录下的任何文件。
使用特殊权限的注意
当我们使用任何特殊权限时,必须保证文件对应的用户的x权限得有效,这样特殊权限才能在这个文件中生效。
例如:
例如粘滞位这个特殊权限,当我们将/tmp目录的其他人的x权限删除时,如果再给它添加Sticky Bit这个特殊权限,那么其他人的x权限上的标志不是t而是T,它表示此时这个特殊权限不生效的意思。