여러 그룹을 위한 격리된 작업 공간을 만들려고 합니다. 각 그룹 구성원은 연결된 공유 폴더를 읽고, 쓰고, 볼 수만 있어야 합니다.
사용자 권한을 처리하기 위해 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