setgid 二进制文件没有权限,安装是正确的,我缺少一些东西,但是什么?

setgid 二进制文件没有权限,安装是正确的,我缺少一些东西,但是什么?

我检查了手册页、安装、权限......

(编辑:根据要求将历史记录合并到一个序列中。开始看起来是一个不简单的问题。自上次编辑以来没有什么新内容,只是将所有漂亮的东西捆绑在一起)

~/sandbox/6$ editfunc doit
~/sandbox/6$ -x doit
+ doit
+ find
.
+ cp /bin/ln /bin/id .
+ sudo chown jthill:jthill id ln
+ chmod g+s id ln
+ mkdir protected
+ chmod 770 protected
+ touch data
+ set +xv
~/sandbox/6$ ls -A
data  id  ln  protected
~/sandbox/6$ ls -Al
total 92
-rw-r--r-- 1 jthill jthill     0 Nov  8 02:39 data
-rwxr-sr-x 1 jthill jthill 31432 Nov  8 02:39 id
-rwxr-sr-x 1 jthill jthill 56112 Nov  8 02:39 ln
drwxrwx--- 2 jthill jthill  4096 Nov  8 02:39 protected
~/sandbox/6$ sudo su nobody
[nobody@home 6]$ ./id
uid=619(nobody) gid=617(nobody) egid=1000(jthill) groups=617(nobody)
[nobody@home 6]$ ./ln ln protected
./ln: failed to create hard link ‘protected/ln’ => ‘ln’: Operation not permitted
[nobody@home 6]$ ./ln data protected
./ln: failed to create hard link ‘protected/data’ => ‘data’: Operation not permitted
[nobody@home 6]$ ln ln protected
ln: failed to create hard link ‘protected/ln’ => ‘ln’: Permission denied
[nobody@home 6]$ ln data protected
ln: failed to create hard link ‘protected/data’ => ‘data’: Permission denied
[nobody@home 6]$ exit
~/sandbox/6$ 

答案1

找到了:

  • 如果sysctl fs/protected_hardlinks设置了,
  • 非所有者(并且没有 CAP_FOWNER)的硬链接必须是:
    • 不特别
    • 没有设置用户ID
    • 不可执行 setgid
    • 可读可写

根据fs/namei.c。 SO 上的一些人想要有一个人们可以添加但无法查看的保管箱文件夹(我认为这是 Windows 功能),我认为这是 setgid 会很好的少数几个地方之一,并且烟雾测试将我带到了这里。

感谢大家,特别是安东谁建议检查来源。

(编辑:sysctl 拼写)

相关内容