SUID属性只能运用在可执行文件上,当用户执行该执行文件时,会临时拥有该执行文件所有者的权限。passwd命令启用了SUID功能,所以一般用户在使用passwd命令修改密码时,会临时拥有了passwd命令所有者root用户的权限,这样一般用户才可以将自己的密码写入/etc/shadow文件。在使用“ls -l”或“ll”命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的“s”就表明该执行文件拥有SUID属性。
[root@srv ~]# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 22960 Jul 17 2006 /usr/bin/passwd
SGID于SUID不同,SGID属性可以应用在目录或可执行文件上。当SGID属性应用在目录上时,该目录中所有建立的文件或子目录的拥有组都会是该目录的拥有组。比如“/charles”目录的拥有组是charles,当“/charles”目录拥有SGID属性时,任何用户在该目录中建立的文件或子目录的拥有组都会时charles;当SGID属性应用在可执行文件上时,其他用户在使用该执行文件时就会临时拥有该执行文件拥有组的权限。在使用“ls -l”或“ll”命令浏览文件或目录时,如果拥有组权限的第三位是一个小写的“s”就表明该执行文件或目录拥有SGID属性。
[root@srv tmp]# ll
total 4
drwxr-sr-x 2 root root 4096 Feb 15 22:25 fringe
-r-xr-sr-x 1 root root 6144 Feb 15 22:25 jack
Sticky属性只能应用在目录,当目录拥有Sticky属性所有在该目录中的文件或子目录无论是什么权限只有文件或子目录所有者和root用户能删除。比如当用户oliva在“/charles”目录中建立一个文件并将该文件权限配置为777,当/charles目录拥有Sticky属性时,只有root和oliva用户可以将该文件删除。在使用“ls -l”或“ll”命令浏览目录时,如果其他用户权限的第三位是一个小写的“t”就表明该执行文件或目录拥有Sticky
属性。
[root@srv tmp]# ll
total 4
drwxrwxrwt 2 root root 4096 Feb 15 22:34 fringe
suid是一种特殊权限,设置了suid的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限。guid与suid类似,只是执行程序时获得的是文件属组的权限。
举个例子,普通用户zhang3可以执行aaa文件,但aaa文件的所有者是root。如果此文件设置了suid权限,那么zhang3用户在执行之的时候也自动获得了root的相关权限。
如何设置suid/guid权限?
设置suid:chmod u+s file1,或者将相应的权限位之前的那一位设置为4;
设置guid:chmod g+s file1,那么就将相应的权限位之前的那一位设置为2;
如果同时设置两者,那么将相应的权限位之前的那一位设置为4+2,即chmod 6755 file1
要取消权限的话,把+号换成-号即可。