Linux

如何在linux中設置組特定文件夾

  • June 27, 2022

我正在嘗試為多個組創建一個隔離的工作區,每個組成員應該只能讀取、寫入和查看其關聯的共享文件夾。

我創建了 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文件夾,這不是所需的行為。

誰能解釋為什麼我沒有得到預期的行為以及如何糾正它?

Fore refence,我按照以下步驟設置組和文件夾權限 - https://www.tutorialspoint.com/how-to-create-a-shared-directory-for-all-users-in-linux

您在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

引用自:https://unix.stackexchange.com/questions/707658