问题描述
我有一个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递归会破坏您的操作系统(实际上,在/
目录或系统目录上进行递归的任何操作都是危险的) -
像这样设置许可批量不是一个好的安全实践