linux对文件的权限管理简直是让人叹为观止,又回顾了一下SUID,SGID和SBIT的作用,总结一下。
SUID是Set UID的简称,翻译过来是设置用户ID,感觉很别扭,还是觉得SUID最为简炼。它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。例如,使用如下命令:
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd
ls -l /etc/shadow
-rw-r----- 1 root shadow 1138 Dec 13 20:00 /etc/shadow
1.SUID只对二进制文件有效 2.调用者对该文件有执行权 3.在执行过程中,调用者会暂时获得该文件的所有者权限 4.该权限只在程序执行的过程中有效
SGID即Set GID的缩写,它出现在文件所属组权限的执行位上面,它对普通二进制文件和目录都有效。当它作用于普通文件时,和SUID类似,在执行该文件时,用户将获得该文件所属组的权限。当SGID作用于目录时,意义就非常重大了。当用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件,如果该目录用SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。
SBIT即Sticky Bit,它出现在其他用户权限的执行位上,它只能用来修饰一个目录。当某一个目录拥有SBIT权限时,则任何一个能够在这个目录下建立文件的用户,该用户在这个目录下所建立的文件,只有该用户自己和root可以删除,其他用户均不可以。例如:
ls -ld /tmp
drwxrwxrwt 12 root root 12288 Dec 17 16:33 /tmp
那么,如何设置上面所说的三种权限呢?首先来介绍一点预备的知识,用数字来表示权限:
4表示SUID 2表示SGID 1表示SBIT
chmod 4777 test