Linux에서 그룹별 폴더를 설정하는 방법

Linux에서 그룹별 폴더를 설정하는 방법

여러 그룹을 위한 격리된 작업 공간을 만들려고 합니다. 각 그룹 구성원은 연결된 공유 폴더를 읽고, 쓰고, 볼 수만 있어야 합니다.

사용자 권한을 처리하기 위해 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

관련 정보