“s”权限位对文件有什么影响?

“s”权限位对文件有什么影响?

我有两个具有以下权限的文件:

-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

相关内容