
根据此来源在 Linux 上,如果文件系统已安装以接受它,则有一种方法可以强制对文件进行强制记录锁定。但这样做需要setgid
在文件中添加位,并删除该文件的组执行权限。它指出:
通过在文件模式中设置组 ID 位但删除组执行位,将文件标记为强制锁定的候选文件。这是一个毫无意义的组合...
逻辑是,setgid
如果没有组执行权限,该位就毫无意义。但事实似乎恰恰相反。
该setgid
位不会影响已在文件组中的用户,因此setgid
只要该文件对“其他”用户或所有者(如果所有者不是该文件的组成员)可执行,该位就应该是有意义的。
组执行权限是唯一与位的实用性无关的执行权限setgid
。
我错过了什么?
答案1
您说得对,这并非毫无意义。2001、4001、6001 甚至 2100 等模式对于可执行文件都是有意义的。只是不太可能(尤其是前三个)。考虑一个名为 的假设程序,由、组grow
拥有。如果在此程序上设置了“setgid”位,则意味着您希望运行该程序的任何进程都以 GID = 运行。可以说,拒绝已在组中的用户/进程运行该程序是不合逻辑或愚蠢的。scott
green
green
green
但我做了一些实验来支持这个答案,并发现了一些令我惊讶的事情。显然有人读了强制锁定的描述并认真对待了它。在我的测试中,模式 2001 和 2100 无法正常工作 — setgid 位不被尊重如果没有设置组执行位。我相信这是一个错误。
你说,
…看来事实恰恰相反。
我不知道你那句话是什么意思。