注:黑色部分为书本的摘抄(个人认为书本解释的很好,所以就直接引用了),其它部分为个人的理解。
SUID : Set User ID,
引用:
"suid意味着如果A用户对属于他自己的shell脚本文件设置了这种权限,那么其他用户在执行这个脚本的时候就拥有了A用户的权限。所以,如果 root用户对某一脚本设置了这一权限的话则其他用户执行该脚本的时候则拥有了root用户权限。
同理,guid意味着执行相应脚本的用户则拥有了该文件所属用户组中用户的权限。
*如果希望设置suid,那么就将相应的权限位之前的那一位设置为 4;
*如果希望设置 guid,那么就将相应的权限位之前的那一位设置为2;
*如果希望两者都置位,那么将相应的权限位之前的那一位设置为4+2。
一旦设置了这一位,一个 s将出现在 x的位置上,记住:在设置 s u i d或g u i d的同时,相应的执行权限位必须要被设置,否则可执行权限是关闭S将出现在 x的位置上。"
解析:
eg:
fish@piniheaven:~/MyDoc$ chmod 4655 ./chmodfish@piniheaven:~/MyDoc$ ls -l
总用量 24
drwSr-xr-x 3 fish fish 4096 7月 3 18:49 chmod #设置了suid,但可执行权限关闭,所以为大写S
eg:
fish@piniheaven:~/MyDoc$ chmod 4755 ./chmod
fish@piniheaven:~/MyDoc$ ls -l
总用量 24
drwsr-xr-x 3 fish fish 4096 7月 3 18:49 chmod #设置了suid,且有可执行权限,所以为小写s
eg:
fish@piniheaven:/bin$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 42824 9月 13 2012 /usr/bin/passwd
#这里的passwd程序设置了suid,所以超级用户和其它用户(例如:jack)拥有权限,(jack可以修改自己的密码,超级用户也可以,但同组的用户没有权限,所以就不能修改jack的密码)