组权限允许,但仍然被拒绝权限

组权限允许,但仍然被拒绝权限

我有一个 ext4 分区,并且已将所有子目录的组所有者设置为 mygroup:

# chgrp -R mygroup /mount/abc
# chmod -R g+swrx /mount/abc

我的用户是该组的一部分。该分区内有一个文件夹,该文件夹由用户“nobody”拥有,现在由组“mygroup”拥有。我的用户是“mygroup”的一部分。以下是 ls -l:

myuser@host:/mount/abc/folder$ ls -l
drwxr-sr-x 2 nobody      mygroup      4096 Apr 25 12:08 ./
drwxrwsrwx 6 nobody      mygroup      4096 Apr 24 07:57 ../
-rw-r-xr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

myuser@host:/mount/abc/folder$ groups myuser
myuser : mygroup {... a list of other groups also...} 

myuser@host:/mount/abc/folder$ rm test.png 
rm: remove write-protected regular file ‘test.png’? y
rm: cannot remove ‘test.png’: Permission denied

myuser@host:/mount/abc/folder$ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied

请注意,我无法删除或创建我的用户所属组所拥有的文件。

我猜我并不完全理解群组的工作原理。我以为如果你是某个群组的成员,那么你就会继承该群组的权限。我做错了什么吗?

谢谢

答案1

您最近是否将该用户添加到该组,中间没有注销/登录?然后“组”将显示该组,但用户还没有组权限。

您可以使用以下方式展示您的有效群体

$ id

例如,如果我将用户添加ps到组中fax,然后输入

$ id

它没有显示该组fax,但是

$ groups ps

显示fax

对您自己的用户执行此操作su会为您提供新的群组隶属关系:

$ su ps
$ id

输出现在还包含fax

答案2

您使用的方法似乎是正确的。我刚刚尝试复制它,并且效果很好。

我不确定是否有拼写错误,但命令有点问题。没有必要在其中提到“mygroup”。以下有效

# chmod -R g+swrx /mount/abc

甚至,您可以删除该s位,只需执行g+rwx。更改权限后,执行ls -l,它应该显示相关权限。

答案3

目录需要设置 x 位(对于目录,该位被视为搜索位)才能打开。因此我使用树,这样我就可以只设置文件夹,避免将所有文件设置为可执行文件的噩梦(树的选项是 -d List directories only.):

sudo tree -faid /mount/abc | xargs -L1 -I{} sudo chmod 755  "{}"

警告!!!您应该考虑到这一点:

  • 在根目录或系统目录上递归使用 chmod 或 chown/将破坏您的操作系统(实际上,在目录或系统目录上进行的任何递归操作/都是危险的)

  • 像那样设置批量权限不是一个好的安全做法

答案4

添加到已接受的答案(因为我还不能发表评论):

如果您使用 BitVise 等软件创建与服务器的 SSH 连接,则简单地关闭并重新打开终端将不被视为登录和退出。它将要做一些事情,比如重新加载你的~/.bashrc,但是不是执行实际的组更新(如果您在“登录”会话中添加了该组)。要使此操作生效,您必须完全注销并使用 SSH 密钥/凭证再次登录。

相关内容