如何清除 Linux 中目录的“s”权限?

如何清除 Linux 中目录的“s”权限?

我有一个显示有权限掩码的目录drwsrwsr-x。当我尝试将权限重置为755S 时,它仍然存在。

“s” 是什么,为什么我不能将权限改回 775(drwxrwxr-x)?

答案1

您在用户和组列中的“执行”位置看到的是 SetUID(执行时设置用户 ID)和 SetGID(执行时设置组 ID)位。

Unix 文件权限实际上是一个 4 位八进制数SUGO

  • 年代控制 SetUID (4)、SetGID (2) 和“Sticky”(1) 位
  • 控制文件所有者的读取 (4)/写入 (2)/执行 (1) 位
  • G控制文件组的读/写/执行位
  • 控制其他所有人的读/写/执行位。

您可以使用以下方法从目录中删除 setuid 位chmod ug-s directory,或者chmod 0755 directory

chmod有关详细信息,请参阅 和的手册页关于 SetUID 位的维基百科页面

答案2

setuid 和 setgid

setuid 和 setgid(分别是“执行时设置用户 ID”和“执行时设置组 ID”的缩写)是 Unix 访问权限标志,允许用户以可执行文件的所有者或组的权限运行可执行文件。它们通常用于允许计算机系统上的用户以临时提升的权限运行程序以执行特定任务。虽然提供的假定用户 ID 或组 ID 权限并不总是提升的,但至少它们是特定的。

要通过数字方式删除 setuid 和 setgid 位,必须在位模式前加上前缀0(例如:0775成为00775)。

运行删除setuid和setgid:

chmod 00775 path

或者

chmod a-st path

答案3

添加到 ooshro 的答案......

如果对目录使用 suid 或 sgid 权限,则在该目录内创建的任何文件都将具有与该目录相同的所有者(如果是 suid)或组(sgid)。

我将其用于我的家庭 Samba 共享。基本目录归用户 nobody 和组 olympia 所有,权限为 2770。因此,您必须属于组 olympia 才能读取或写入该目录下的任何内容,并且它将确保 olympia 是其下所有内容的所有者组。我还将 Samba 配置为使用 2770 的目录掩码和 660 的文件掩码,以在整个树中保持正确的权限。

相关内容