权限除了rwx外还有其他的特殊权限
PART_1:SUID
SUID:让执行者临时拥有属主的权限(只对拥有执行权限的二进制程序有效)
例:所有用户都可以通过passwd命令来修改自己的密码,但密码保存在了/etc/shadow文件里,而文件的默认权限是000,也就是除了属主root外其他用户没有任何对该文件操作的权限,但如果对passwd命令加上SUID权限位,那么就可以让普通用户临时获得程序所有者root的身份来更改密码信息到shadow文件里了,可以看到:
[root@okaka Desktop]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jan 30 2014 /usr/bin/passwd
里面的s权限就是SUID了
SetGID针对文件
1. 只有可执行文件才能设置SGID权限
2. 命令执行者要对该文件拥有x权限
3. 命令在执行时,组身份升级为该文件的所属组
4. SetGID权限与SetUID一样,只在文件(程序)执行过程中有效
举例mlocate 命令
mlocate命令通过查找/var/lib/mlocate/mlocate.db文件中的缓存数据来查找文件位置,但是可以看出,/var/lib/mlocate/mlocate.db文件的other权限是---,普通用户没有rwx权限
bl@ubuntumma:~$ ls -l /usr/bin/mlocate -rwxr-sr-x 1 root mlocate 39520 Jun 20 2013 /usr/bin/mlocate |
bl@ubuntumma:~$ ls -l /var/lib/mlocate/mlocate.db -rw-r----- 1 root mlocate 1889860 Aug 26 06:34 /var/lib/mlocate/mlocate.db |
普通用户bl执行mlocate时,会得到mlocate文件的组权限,也就是说bl临时变成了mlocate文件所属组(mlocate组)的成员,而/var/lib/mlocate/mlocate.db文件的所属组也是mlocate组,并且/var/lib/mlocate/mlocate.db组权限是r--,也就是mlocate组的成员都可以查看/var/lib/mlocate/mlocate.db文件。这样,普通用户bl就可以通过mlocate命令查看/var/lib/mlocate/mlocate.db文件鸟。
PART_2:SGID
和SUID类似,SGID是让执行者临时拥有所属组的权限(只对拥有执行权限的二进制程序有效)
SetGID针对目录
1. 普通用户bl需要拥有目录 testDir/的rx权限
2. bl在testDir/中的有效组会变成testDir/目录的所属组(testGroup)
3. bl在testDir/中新建文件的默认组都会属于testGroup,而不是bl的所属组
SetGID基本没鸟用,不用,不用
设置SetGID
2代表SGID
chmod 2755 文件名
chmod g+s 文件名