我正在尝试为多个组创建一个隔离的工作区,每个组成员应该只能读取、写入和查看其关联的共享文件夹。
我创建了2个用户组groupATeam和groupBTeam来处理用户的权限。我还将组权限分配给相关项目文件夹 groupA 和 groupB。
#Check project folder permissions
admin@computer:/folder/data$ ls -al /folder/data | grep groupA
drwsrws--x 2 root groupATeam 4096 Jun 24 11:56 groupA
admin@computer:/folder/data$ ls -al /folder/data | grep groupB
drwsrws--- 2 root groupBTeam 4096 Jun 24 11:38 groupB
对于两个组中的管理员用户,我可以访问这两个文件夹,然后毫无问题地进行读写。
#Check groups
admin@computer:/folder/data$ getent group groupATeam
groupATeam:x:1009:worker_3,worker_4,admin
admin@computer:/folder/data$ getent group groupBTeam
groupBTeam:x:1008:worker_1,worker_2,admin
#Check admin can access and write to groupA folder
admin@computer:/folder/data$ cd groupA/
admin@computer:/folder/data/groupA$ ls
test_file.txt
admin@computer:/folder/data/groupA$ cd ..
#Check admin can access groupB folder
admin@computer:/folder/data$ cd groupB/
admin@computer:/folder/data/groupB$ ls
test_file.txt
中的人员groupA
似乎也拥有正确的权限,能够访问、读取和写入他们的文件夹,但不能访问、读取和写入groupBs
文件夹。
# Worker 3 is part of groupA team and therefore should only be able to interact with groupA folder but not groupB
worker_3@computer:~$ cd /folder/data/groupA/
worker_3@computer:/folder/data/groupA$ touch test_file101.txt
worker_3@computer:/folder/data/groupA$ ls
test_file.txt test_file101.txt
worker_3@computer:/folder/data/groupA$ vim test_file.txt
#Check non group member can acccess restricted groupB folder
worker_3@computer:~$ cd /folder/data/groupB/
bash: cd: /folder/data/groupB/: Permission denied
# This is the correct behaviour I'm looking for
问题似乎出在 groupBTeam 的用户身上。
# Worker 1 is part of groupB team and therefore should only be able to interact with groupB folder but not groupA
worker_1@computer:/folder/data$ cd groupB/
worker_1@computer:/folder/data/groupB$ ls
test_file.txt
worker_1@computer:/folder/data/groupB$ touch test_file101.txt
worker_1@computer:/folder/data/groupB$ ls
test_file.txt test_file101.txt
worker_1@computer:~$ cd /folder/data/groupA/ #This shouldn't work
worker_1@computer:/folder/data/groupA$ ls
ls: cannot open directory '.': Permission denied
worker_1@computer:/folder/data/groupA$ cd ..
# Incorrect behavior, I can access the groupA folder even though worker_1 isn't part of
# this group
的成员groupBTeam
可以访问groupA
文件夹,这不是所需的行为。
谁能解释为什么我没有得到预期的行为以及如何纠正它?
作为参考,我按照以下步骤设置组和文件夹权限 -https://www.tutorialspoint.com/how-to-create-a-shared-directory-for-all-users-in-linux
答案1
您已为目录中的其他人设置了执行位groupA
:
drwsrws--x 2 root groupATeam 4096 Jun 24 11:56 groupA
这允许每个人都可以遍历目录,无论组成员身份如何。如果您注意到,目录中没有为其他groupB
成员设置groupATeam
无法访问的位:
drwsrws--- 2 root groupBTeam 4096 Jun 24 11:38 groupB
要获得所需的内容,请groupA
使用以下任一命令从目录中删除执行位
chmod 2770 /path/to/groupA
chmod o-x /path/to/groupA
中的用户groupBTeam
或其他任何人都无法访问它。
如果您希望它影响目录内的所有内容(包括文件):
chmod -R 2770 /path/to/groupA
chmod -R o-x /path/to/groupA