前段时间在 IRC 的一次对话中,我所在的频道中的一位用户建议某人设置一个目录,以便它继承文件上的用户 ID 以解决其他人遇到的问题。当时我说“linux 不支持 setuid 目录”。在那之后,给出建议的人向我展示了他的系统的 pastebin ( http://codepad.org/4In62f13 ),以尊重对目录设置的 setuid 权限。
只是为了解释一下,当我说“linux 不支持 setuid 目录”时,我的意思是您可以转到“chmod u+s 目录”,它会在目录上设置位。但是,linux(据我所知)忽略了这一点(在目录上)。
尽我所能,我只是无法完全复制那个 pastebin。曾经有人向我建议,可能可以用 selinux 模拟这种行为 - 并玩弄规则,可以在文件上强制使用 uid,但不能从 setuid 目录权限(我可以看到)。在互联网上阅读相当缺乏信息 - 大多数地方声称“不,目录上的 setuid 不适用于 linux”,偶尔“它可以在特定情况下完成”(例如:http : //arstechnica.com/ etc/linux/2003/linux.ars-12032003.html )
我不记得原来的人是谁,但原来的系统是一个debian 6系统,它运行的文件系统是用“default,acl”挂载的xfs。我试过复制它,但到目前为止没有运气(到目前为止尝试过各种版本的 debian、ubuntu、fedora 和 centos)
任何人都可以告诉我什么或如何让系统尊重目录上的 setuid 吗?
目录的 Setuid 与 setgid 的行为不同。除非 shell 输出来自 FreeBSD,否则有人会感到无聊并以您为代价获得一点乐趣。
在 UNIX 和 Linux 系统上,目录上设置的 setuid 权限会被忽略。[4] FreeBSD 可以配置为类似于 setgid 来解释它,即强制所有文件和子目录归顶级目录所有者所有。 [5]
在 FreeBSD 中,目录的行为就像它们的 setgid 位总是被设置一样,不管它的实际值如何。正如 open(2) 中所述,“当创建一个新文件时,它被赋予包含它的目录组。”
http://en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories
One*_*roi -2
来自 RHELman chmod
\n\n\nchmod 保留目录\xe2\x80\x99s set-user-ID 和 set-group-ID 位,除非您明确指定。您可以使用 u+s 和 gs 等符号模式设置或清除这些位,\n 并且可以使用数字模式设置(但不能清除)这些位。
\n
从数字上来说,如果我没记错的话,chmod 4711 ./dir
添加设置 UID 位,chmod 2711 ./dir
添加设置 gid 位,以便6711
根据 Pastebin 中的演示设置 uid + gid 继承。
根据手册页chmod u+s
==chmod 4XXX
和chmod g+s
==chmod 2XXX