文件的正常权限是首选对用户进行分组:文件属主,文件属组和其它。然后每组类用户对文件具有三种基本的权限:r,w,x。除了这些正常的权限设置,还可以设置三种特殊权限。


1. suid。任何用户执行设置有该权限的文件后,不再以用户自己的身份作为进程的属主,而是以该执行文件的属主作为进程的属主。这种权限的实质就是让执行该文件的用户,在进程运行过程中被授予文件属主的身份。

举例:

-rwsr-xr-x. 1 root root 48568 Sep 10 14:24 /tmp/cat

任何用户运行cat时,具有的是root权限,所以可以查看一切文件的内容!


2. sgid。一般使用中,该权限位设置在目录文件上。具有sgid的目录,用户在此目录下创建文件时,新建文件的属组不再是用户所属的基本组,而是目录的属组。

例:

drwxrwsr-x. 2 root cloud 4096 Sep 10 14:35 test


3. 粘滞位。一般使用中,该权限位也设置在目录文件上。对于具有粘滞位的目录,如果一个普通用户对该目录有写权限,则,该用户可以在该目录下创建、删除文件属主是自己的文件,不能删除文件属主不是自己的文件。显然,这就是设置了粘滞位后的效果。否则,该用户是可以删除目录任意文件的!

例:

drwxrwxrwt. 14 root root 4096 Sep 10 14:26 /tmp


这三个特殊权限位一起,可以用一个8进制数来表示。(suid,sgid,sticky)。因此,2进制的001表示设置了sticky,010表示设置了sgid,100表示设置了suid。

在文件显示的权限占位符中,它们分别从左到右替换掉了属主的x位,属组的x位,其它类的x位。对于suid和sgid,若对应的x位具有执行权限,则显示为小写的’s’;若对应的x位不具有执行权限,则显示为大写的’S’。对于sticky,若对应的x位具有执行权限,则显示为小写的’t’;若对应的x位不具有执行权限,则显示为大写的’T’。


特殊权限位的设置:

假定要设置的目录或文件FILE原来的正常权限值是755

1.  suid

chmod u+s FILE

chmod 4755 FILE

2.  sgid

chmod g+s FILE

chmod 2755 FILE

3.  sticky

chmod o+s FILE

chmod 1755 FILE