我创建了一个名为 的目录newDir
,并更改了它所属的组mkdir newDir && chgrp test-group newDir
。
me
当我这样做时我是用户。
调用stat newDir
会产生预期的输出:
File: newDir
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 801h/2049d Inode: 10756102 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1001/ me) Gid: ( 1003/test-group)
Access: 2018-01-27 17:03:07.514864274 +0100
Modify: 2018-01-27 17:03:07.514864274 +0100
Change: 2018-01-27 17:05:08.317543163 +0100
Birth: -
后来,以 user 身份登录otherUser
,我尝试使用 来设置目录上的组 ID (setgid) 权限位chmod g+s newDir
。
令人失望的是,我看到stat
权限没有改变。不过,我在 stderr 上没有收到错误,并且命令的结果chmod
为 0,如 所示echo $?
。
为什么chmod g+s newDir
没有效果呢?
我使用的是 Arch Linux 4.14.13。
答案1
chmod g+s newDir
以用户身份执行时未成功的原因otherUser
是它otherUser
不是组的一部分test-group
,而组是 的组newDir
。
切换到属于 的用户test-group
并且做的chmod g+s newDir
工作很好。
答案2
添加到马蒂亚斯的答案中,如果你想以数字和绝对的方式进行,那就是
chmod 2755 newDir
如果您想将自己添加到您所定位的群组中:
usermod -a -G otheruser test-group
newgrp
有时newgrp似乎没有刷新组,因此您可能需要重新登录。
奇怪的是,一个人必须是他们试图为其设置 GUID 位的组的一部分,并且它失败而没有错误,但事实就是如此。