在 Ubuntu Linux 上,我有一个设置了 setuid 位 ( drwsr-xr-x
) 的目录,我想取消设置。
也不是chmod 755
也不chmod 0755
是chmod 00755
(我虽然可能第一个 0 被解释为“这是八进制”)清除了 setuid 位。然而,chmod u-s
做到了。
清除 setuid 位的正确数字模式是什么?
答案1
有趣的是。使用 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 允许实现忽略这些请求。