ACL 권한을 사용하여 다른 그룹이 디렉터리에 액세스하지 못하도록 하시겠습니까?

ACL 권한을 사용하여 다른 그룹이 디렉터리에 액세스하지 못하도록 하시겠습니까?

0. extbk 그룹에 사용자 bkupusr을 추가합니다.

leeand00@hostname:/home/leeand00/$ sudo groupadd extbk
leeand00@hostname:/home/leeand00/$ sudo usermod -G extbk bkupusr

1. 생성된 디렉터리 구조:

leeand00@hostname:/home/leeand00/$ mkdir appdir2
leeand00@hostname:/home/leeand00/$ mkdir appdir2/appuser1
leeand00@hostname:/home/leeand00/$ mkdir appdir2/appuser2

2. 나중에 여기에서 생성하는 다른 콘텐츠에 대한 기본 권한을 설정합니다(기존 콘텐츠는 반복되지 않음).

leeand00@hostname:/home/leeand00/$ setfacl -dm g:extbk:r ./appdir2

3. 디렉터리 및 파일을 생성합니다.

leeand00@hostname:/home/leeand00/$ cd appdir2
leeand00@hostname:/home/leeand00/appdir2/$ touch file1
leeand00@hostname:/home/leeand00/appdir2/$ mkdir dir1
leeand00@hostname:/home/leeand00/appdir2/$ echo "Hi" >> file1

4. 다른 그룹이 appdir2를 읽고 실행하는 것을 방지합니다.

leeand00@hostname:/home/leeand00/appdir2/$ cd ..
leeand00@hostname:/home/leeand00/$ chmod o-xr ./appdir2

5. extbk 그룹의 사용자로부터 액세스를 시도합니다.

bkuser@hostname:/home/leeand00/$ cd ./appdir2
bash: cd: appdir2: Permission denied

bkuser@hostname:/home/leeand00/$ cat ./appdir2/file1
cat: appdir2/file1: Permission denied

그러나 다음과 같이 다른 권한을 변경하면:

leeand00@hostname:/home/leeand00/$ chmod o+x ./appdir2

그러면 파일에 다시 액세스할 수 있습니다.

bkuser@hostname:/home/leeand00/$ cd ./appdir2
bkuser@hostname:/home/leeand00/$ cat ./appdir2/file1
hi

하지만 다른 그룹의 다른 사람들도 마찬가지입니다. 그러면 ACL의 그룹(및 그룹과 소유자)에만 액세스를 허용하고 다른 그룹에는 액세스를 허용하지 않는 방법이 있습니까?

답변1

가지다폴더와 관련된 FACL 규칙 집합 ./appuser2: 폴더 자체에 대한 FACL 규칙 ./appuser2과 폴더 내에 생성된 파일 및 폴더에 적용되는 기본 FACL 규칙을 지정하는 두 번째 FACL 규칙 집합입니다 ./appuser2.

위에서 설명한 단계에서는 에서 생성된 파일 및 폴더에 적용되는 "기본" FACL 규칙을 설정했지만 ./appuser2폴더 자체에 대한 ./appuser2FACL 규칙 집합은 아직 정의 하지 않았습니다. 이는 그룹 구성원이 extbk자신의 콘텐츠에 액세스할 수 없는 이유 중 하나입니다 ./appuser2.

수정해야 할 또 다른 잘못된 구성 문제: 폴더에 액세스해야 하는 모든 사용자에게는 ./appuser2디렉터리에 대한 "x" 실행 권한을 부여해야 합니다. chmod(1) 매뉴얼에 설명된 대로 폴더의 경우 "x" 실행 권한은 폴더에 대한 사용자 검색 권한을 부여하며, 이는 폴더의 내용에 액세스하기 위해 폴더에서 디렉터리 변경 작업을 수행할 수 있는 권한을 사용자에게 부여합니다.

다음은 귀하의 원래 의견을 바탕으로 한 예입니다.

목록 1: FACL 권한 예

sudo su -
mkdir -p /opt/appdir2/{appuser1,appuser2}
setfacl -bR /opt/appdir2/
chmod 750 /opt/appdir2/appuser2/
find /opt/appdir2/ -ls
    1049001    4 drwxr-xr-x   4 root     root         4096 Jul 26 22:02 /opt/appdir2/
    1049051    4 drwxr-xr-x   2 root     root         4096 Jul 26 22:02 /opt/appdir2/appuser1
    1049053    4 drwxr-x---   2 root     root         4096 Jul 26 22:02 /opt/appdir2/appuser2

getfacl -p /opt/appdir2/appuser2/
    # file: /opt/appdir2/appuser2/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::---

#==========================================================
# FACL rules for folder `/opt/appdir2/appuser2/'.

setfacl -m g:extbk:r-x /opt/appdir2/appuser2/

getfacl -p /opt/appdir2/appuser2/
    # file: /opt/appdir2/appuser2/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    group:extbk:r-x
    mask::r-x
    other::---

#==========================================================
# FACL rules for files and folders created
# within folder `/opt/appdir2/appuser2/'.

setfacl -dm g:extbk:r-x /opt/appdir2/appuser2/

getfacl -p /opt/appdir2/appuser2/
    # file: /opt/appdir2/appuser2/
    # owner: root
    # group: root
    user::rwx
    group::r-x
    group:extbk:r-x
    mask::r-x
    other::---
    default:user::rwx
    default:group::r-x
    default:group:extbk:r-x
    default:mask::r-x
    default:other::---

echo "Hello" >/opt/appdir2/file1
echo "World" >/opt/appdir2/appuser2/file2

find /opt/appdir2/ -ls
    1049001    4 drwxr-xr-x   4 root     root         4096 Jul 26 22:13 /opt/appdir2/
    1049051    4 drwxr-xr-x   2 root     root         4096 Jul 26 22:02 /opt/appdir2/appuser1
    1049053    8 drwxr-x---   2 root     root         4096 Jul 26 22:13 /opt/appdir2/appuser2
    1049071    4 -rw-r-----   1 root     root            6 Jul 26 22:13 /opt/appdir2/appuser2/file2
    1049055    4 -rw-r--r--   1 root     root            6 Jul 26 22:13 /opt/appdir2/file1

getfacl -p /opt/appdir2/appuser2/file2
    # file: /opt/appdir2/appuser2/file2
    # owner: root
    # group: root
    user::rw-
    group::r-x                      #effective:r--
    group:extbk:r-x                 #effective:r--
    mask::r--
    other::---


#==========================================================
# Ensure users who are members of the group `extbk'
# are granted access to folder /opt/appdir2/appuser2/ 
# and its contents.

usermod -a -G extbk deleteme
su - deleteme

[deleteme]$ find /opt/appdir2/ -ls
    1049001    4 drwxr-xr-x   4 root     root         4096 Jul 26 22:13 /opt/appdir2/
    1049051    4 drwxr-xr-x   2 root     root         4096 Jul 26 22:02 /opt/appdir2/appuser1
    1049053    8 drwxr-x---   2 root     root         4096 Jul 26 22:13 /opt/appdir2/appuser2
    1049071    4 -rw-r-----   1 root     root            6 Jul 26 22:13 /opt/appdir2/appuser2/file2
    1049055    4 -rw-r--r--   1 root     root            6 Jul 26 22:13 /opt/appdir2/file1

[deleteme]$ cat /opt/appdir2/appuser2/file2
    World

[deleteme]$ exit

#==========================================================
# Ensure users who are NOT members of the group `extbk'
# are denied access to folder /opt/appdir2/appuser2/ 
# and its contents.

gpasswd -d deleteme extbk
su - deleteme

[deleteme]$ find /opt/appdir2/ -ls
    1049001    4 drwxr-xr-x   4 root     root         4096 Jul 26 22:13 /opt/appdir2/
    1049051    4 drwxr-xr-x   2 root     root         4096 Jul 26 22:02 /opt/appdir2/appuser1
    1049053    8 drwxr-x---   2 root     root         4096 Jul 26 22:13 /opt/appdir2/appuser2
    find: '/opt/appdir2/appuser2': Permission denied
    1049055    4 -rw-r--r--   1 root     root            6 Jul 26 22:13 /opt/appdir2/file1

[deleteme]$ cat /opt/appdir2/appuser2/file2
    cat: /opt/appdir2/appuser2/file2: Permission denied

[deleteme]$ exit

관련 정보