组权限允许,但仍无法获得权限


43

我有一个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

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

我想我不太了解小组的工作方式。我想,如果您属于某个组,那么您将继承该组的权限。难道我做错了什么?

谢谢


权限三元组看起来像是owner-group-world。在上面可以看到该目录的drwxr-sr-x。因此该组的权限为rs。看起来chmod -R没有递归地将权限设置为rwx。当我为文件夹的组权限翻转w位时,它起作用了。
2014年

Answers:


69

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

您可以使用以下方式显示有效的分组

$ id

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

$ id

它不显示组fax,但是

$ groups ps

显示fax

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

$ su ps
$ id

输出现在还包含fax


1
知道这真的很有帮助。特别是“ sudo <用户名>”部分。
2014年

3
登录/注销是如此明显,以至于我错过了重点,非常感谢伙伴!
nicolallias

1
@peschü我有sudo并且经常使用它。我向您显示的错误抱怨该命令ubuntu(即用户名)不是可识别的命令。我认为您的建议在语法上不正确-也许在您的情况下有效,因为ps碰巧既是命令又是用户名。
贝尔达兹'16

1
@beldaz哦,不!你是对的!从语法上讲是正确的su <username>。我已经编辑了帖子。
peschü

1
该死的老注销/登录再次工作。
Steampunkery

9

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

我不确定是否有错字,但是命令有一点问题。无需在其中提到“ mygroup”。以下作品

# chmod -R g+swrx /mount/abc

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


2
我删除了带有组名的错字。当您执行ls -l时,该目录具有wrx权限,并且该目录归nobody:mygroup所有。即使myuser是mygroup的一部分,myuser仍然无法创建/删除文件。我希望这是有道理的。
2014年

3

您无法删除文件,因为该组mygroup对文件test.png和文件夹均没有写权限。为了对文件执行写操作,文件权限应如下所示:

-rw-rwxr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

如果您仔细查看权限格式

duuugggooo

前三个占位符uuu是用户[R EAD,w ^仪式和e X ecute。接下来的三个占位符ggg用于该组和ooo其他占位符。在发表OP组片段缺少W¯¯仪式的许可。


2

要添加到接受的答案中(因为我无法发表评论):

如果您使用BitVise之类的软件来创建与服务器的SSH连接,则仅关闭并重新打开终端就不会算作登录和注销。它做这样的事情重装你的~/.bashrc,但是执行实际的组更新(如果添加了群组中的“登录”会话)。为使此方法生效,您将必须完全注销并使用SSH密钥/凭据再次登录。


2

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

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

警告!!!您应该考虑以下因素:

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

  • 像这样设置许可批量不是一个好的安全实践


1
万分谢意!“目录需要x位设置”字样解决了我的问题!我做了“ sudo chmod g + x <父目录路径>”,它起作用了。
kinORnirvana
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.