suid意味着如果A用户对属于他自己的shell脚本文件设置了这种权限,那么其他用户在执行这个脚本的时候就拥有了A用户的权限。
guid意味着执行相应脚本的用户则拥有了该文件所属用户组中用户的权限。
有相当一些命令也设置了suid和guid。如果想找出这些命令,可以进入/bin或/sb in目录,执行下面的命令:
$ ls -l | grep '^...s'
上面的命令是用来查找suid文件的;
$ ls -l | grep '^...s..s'
上面的命令是用来查找suid和guid的。
如何设置suid/guid?
如果希望设置suid,那么就将相应的权限位之前的那一位设置为4;如果希望设置guid,那么就将相应的权限位之前的那一位设置为2;如果希望两者都置位,那么将相应的权限位之前的那一位设置为4+2。
一旦设置了这一位,一个s将出现在x的位置上。记住:在设置suid或guid的同时,相应的执行权限位必须要被设置。例如,如果希望设置guid,那么必须要让该用户组具有执行权限。
如果想要对文件login设置suid,它当前所具有的权限为rwx rw- r-- (741),需要在使用chmod命令时在该权限数字的前面加上一个4,即chmod 4741,这将使该文件的权限变为rws rw- r--。
$ chmod 4741 login
还可以使用符号方式来设置suid/guid。如果某个文件具有这样的权限: rwx r-x r-x,那么可以这样设置其suid/guid:
chmod u+s <filename>
chmod u+g <filename>
取消时:chmod -s 就会取消SUID 设置。