使用数字模式清除 setuid 权限

And*_*eKR 4 setuid permissions chmod

在 Ubuntu Linux 上,我有一个设置了 setuid 位 ( drwsr-xr-x)的目录,我想取消设置它。

既不是chmod 755也不chmod 0755chmod 00755(我虽然可能第一个 0 被解释为只是“这是八进制”)清除 setuid 位。然而,chmod u-s做到了。

清除 setuid 位的正确数字模式是什么?

Mad*_*ter 5

有趣的是。使用 GNU 这似乎是不可能的chmod,这是一个功能。从我系统上的info条目开始chmod;请注意,虽然设置位的条目参考符号和数字模式,但清除它们的条目仅指符号 ( ug-s) 模式:

27.4 目录和 Set-User-ID 和 Set-Group-ID 位

这些便利机制依赖于目录的 set-user-ID 和 set-group-ID 位。如果像chmod' and mkdir'这样的命令定期清除目录上的这些位,则该机制将不那么方便并且更难以共享文件。因此,像“chmod”这样的命令不会影响目录的 set-user-ID 或 set-group-ID 位,除非用户在符号模式下特别提到它们,或者在数字模式下设置它们。

[...]

如果您想尝试设置这些位,您必须在符号或数字模式中明确提及它们,例如:

[...]

如果您想尝试清除这些位,您必须以符号模式明确提及它们,例如:

[...]

此行为是 GNU 扩展。可移植脚本不应依赖于在目录上设置或清除这些位的请求,因为 POSIX 允许实现忽略这些请求。