文件权限中的“s”属性是什么意思?

and*_*ers 83 setuid privileges

请比较以下两行:

-rws---r-x 1 root root 21872 2009-10-13 21:06 prg1 

-rwx---r-x 1 root root 21872 2009-10-13 21:06 prg2 
Run Code Online (Sandbox Code Playgroud)

上的 setuid 位prg1以及“其他”的读取和执行位是否意味着任何用户都可以使用 root 权限运行它?该 prg2也有读取和执行“其他”,但没有设置setuid位,这是否意味着它仍然可以通过任何用户,但没有root权限运行?

cas*_*sey 93

那是“setuid”位,它告诉操作系统使用其所有者的用户 ID 执行该程序。这通常与 root 拥有的文件一起使用,以允许普通用户在没有外部工具(例如sudo)的情况下以 root 身份执行它们。

您可以使用 设置 suid 位chmod,例如chmod 4755,这将给一个文件赋予正常权限 755 do ( rwxr-xr-x) 并添加 suid 位以给予rwsr-xr-x

您可以通过发出一个带有 0 前缀的普通 chmod 命令来清除 setuid 位。例如,要将权限设置回rwxr-xr-x您可以使用chmod 0755.

  • “chmod 会保留目录的 set-user-ID 和 set-group-ID 位,除非您明确指定。您可以使用符号模式(如 u+s 和 gs)设置或清除这些位,并且您可以设置(但不清除)具有数字模式的位。” - GNU coreutils 8.22 2016 年 2 月 (9认同)

ori*_*ion 26

恰恰相反,您不需要使用 sudo 或切换到 root,可执行文件会为您完成。

  • 是的。如果设置了 setuid 位,它会以 ITS 所有者的权限(通常是 root 的)执行,无论是谁调用它。一个很好的例子是 `mount` 命令。它确实检查你是谁,但如果 fstab 说你可以,它可以挂载东西。 (2认同)