为什么要删除强制文件锁定的组执行?

为什么要删除强制文件锁定的组执行?

根据此来源在 Linux 上,如果文件系统已安装以接受它,则有一种方法可以强制对文件进行强制记录锁定。但这样做需要setgid在文件中添加位,并删除该文件的组执行权限。它指出:

通过在文件模式中设置组 ID 位但删除组执行位,将文件标记为强制锁定的候选文件。这是一个毫无意义的组​​合...

逻辑是,setgid如果没有组执行权限,该位就毫无意义。但事实似乎恰恰相反。

setgid位不会影响已在文件组中的用户,因此setgid只要该文件对“其他”用户或所有者(如果所有者不是该文件的组成员)可执行,该位就应该是有意义的。

组执行权限是唯一与位的实用性无关的执行权限setgid

我错过了什么?

答案1

您说得对,这并非毫无意义。2001、4001、6001 甚至 2100 等模式对于可执行文件都是有意义的。只是不太可能(尤其是前三个)。考虑一个名为 的假设程序,由、组grow拥有。如果在此程序上设置了“setgid”位,则意味着您希望运行该程序的任何进程都以 GID = 运行。可以说,拒绝已在组中的用户/进程运行该程序是不合逻辑或愚蠢的。scottgreengreengreen

但我做了一些实验来支持这个答案,并发现了一些令我惊讶的事情。显然有人读了强制锁定的描述并认真对待了它。在我的测试中,模式 2001 和 2100 无法正常工作 — setgid 位不被尊重如果没有设置组执行位。我相信这是一个错误。

你说,

…看来事实恰恰相反。

我不知道你那句话是什么意思。

相关内容