当前位置: 首页>>技术教程>>正文


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

,

问题描述

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

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

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

谢谢

最佳方法

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

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

$ id

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

$ id

它不显示组fax,但是

$ groups ps

显示fax

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

$ su ps
$ id

现在,输出还包含fax

次佳方法

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

我不确定是否有错字,但命令有轻微问题。不需要在那里提到”mygroup”。以下作品

# chmod -R g+swrx /mount/abc

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

第三种方法

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

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

如果您仔细查看权限格式

duuugggooo

用户读取,写入和执行前三个占位符uuu。接下来的三个占位符ggg用于组,而ooo用于其他占位符。在OP组发布的代码段中缺少写权限。

第四种方法

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

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

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

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

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11754.html,未经允许,请勿转载。