我创建了一个名为的目录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: -
后来,以用户身份登录otherUser
,我尝试在目录上设置组ID(setgid)权限位chmod g+s newDir
。
令人失望的是,我看到stat
权限没有改变。但是,我在 stderr 上没有错误,并且chmod
命令的结果为 0,如echo $?
.
为什么chmod g+s newDir
没有效果?
我在 Arch Linux 4.14.13 上。
chmod g+s newDir
以 user 身份执行时没有成功的原因otherUser
是它otherUser
不是 grouptest-group
的一部分,它是newDir
.切换到参与其中的用户
test-group
并chmod g+s newDir
正常工作。马蒂亚斯的答案的补充,如果你想在数字上和绝对地做到这一点,那就是
如果您想将自己添加到您的目标组:
有时 newgrp 似乎不会刷新组,因此您可能需要重新登录。
奇怪的是,一个人必须是他们试图为其设置 GUID 位的组的一部分,并且它失败而没有错误,但事实就是如此。