我有两个具有以下权限的文件:
-rwsr--r-- 1 root root 213 Oct 22 12:15 f1
-r--rwxr-- 1 Bob staff 113 Oct 22 12:18 f4
用户可以Bob
执行f1
吗?为什么?s
权限集中的效果是什么f1
?
答案1
那里的许可s
意味着设定值为该文件设置位(模式 4000)。运行这样一个文件具有文件所有者的权限,而不是调用它的用户的权限。在这种情况下,当用户 Bob 运行该文件时,它将像用户 root(超级用户)运行它一样,因此它将具有对系统的完全访问权限。正如您想象的那样,这可能非常危险,例如设置了 setuid 的 shell 实际上是整个系统的后门。
但是,该文件缺少x
“其他”的可执行 ( ) 权限,因此 Bob 无法真正运行它。要允许所有其他用户(包括 Bob)运行该文件,root 用户必须输入以下命令
chmod a+rx f1
关于第二部分的相关问题:在没有可执行位的情况下启用 setuid 的目的是什么?
答案2
这s权限中的意思是设定值已打开。不过,Bob 可以执行 f1 文件,但前提是更改了权限,以便其他group有执行权限,所以至少有4745:
sudo chmod 4745 f1
-rwsr--r-x 1 root root 213 Oct22 12:15 f1