As에서는 기본 ACL을 root
생성하고 설정했습니다./test
setfacl -m -d dog:rwx /test
getfacl의 출력을 확인했습니다.
# file: test
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:dog:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
이제 사용자로서 dog
디렉토리를 생성하려고 하면 /test
다음과 같은 결과가 나타납니다.
mkdir: can't create directory 'sub': Permission denied
왜 그럴까요? 기본값 없이 setfacl을 사용하면 getfacl이 user:dog:rwx
대신 표시 default:user:dog:rwx
되고 dog
여기에 하위 디렉터리가 생성될 수 있습니다.
참고: 가상 머신 내에서 테스트되었으며 가상 머신 화면의 텍스트는 복사할 수 없으므로 스크린샷을 추가했습니다.
답변1
ACL을 할당할 때 를 사용 setfacl -m -d ...
하면 동작이 다릅니다 . setfacl -m ...
이것기본 ACL그들은 모두 상속에 사용됩니다. 그래서 할당해야합니다ACL주고 싶을 때ACL 권한사용자에게 할당하고기본 ACL특정 디렉터리 아래의 권한을 상속합니다.
설명하다
먼저 디렉터리를 루트로 이동 /test
하고 해당 권한을 확인했습니다.
$> mkdir /test ; ls -ld /test
#Output
drwxr-xr-x 2 root root 4096 Dec 1 17:52 test
보시다시피 이 그룹과 다른 그룹은 그렇지 않습니다.쓰다기본 권한. 이 두 명령의 차이점을 살펴보겠습니다 setfacl
.
사용setfacl -m guest:rwx /test
루트로 명령을 실행하면 다음을 사용하여 다음 출력을 볼 수 있습니다.
ls -ld /test
#Output
drwxrwxr-x+ 2 root root 4096 Dec 1 17:57 test
위에서 볼 수 있듯이 이제 디렉토리에는쓰다그룹 권한. 그런데 삭제하면ACL다음을 사용 setfacl --remove-all /test
하면 사용 권한이 이전 권한( )으로 복원되었음을 ls -ld /test
알 수 있습니다 ./test
drwxr-xr-x
getfacl -e /test
#Output
# file: test
# owner: root
# group: root
user::rwx
user:guest:rwx #effective:rwx
group::r-x #effective:r-x
mask::rwx
other::r-x
나는 getfacl -e
방법을 아는 데 유용한 모든 유효한 권리를 인쇄 했습니다.ACL일하다.
/test
이제 디렉토리 아래에 파일 guest
과 사용자를 생성해 보겠습니다 edgar
.
(user:guest)> touch /test/fuzz
#All is ok!
(user:edgar)> touch /test/buzz
#touch: cannot touch '/test/buzz': Permission denied
guest
사용자가 /test/fuzz
파일을 만들 수는 있지만 만들 수는 없다는 것을 알 수 있습니다 edgar
. 이 동작은 올바른 이유입니다.전방십자인대할당 guest
.
사용setfacl -dm guest:rwx /test
제 경우에는 구문이 setfacl -m -d guest:rwx /test
유효하지 않습니다(저는 openSUSE Tumbleweed를 사용하고 있습니다). 을 사용할 수도 있습니다 setfacl -m d:guest:rwx /test
.
이제 명령을 실행하십시오.기본 ACL나는 다음을 가지고 있습니다 :
ls -ld /test
drwxr-xr-x+ 2 root root 4096 Dec 1 18:39 test
getfacl -e /test
# file: test
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:guest:rwx #effective:rwx
default:group::r-x #effective:r-x
default:mask::rwx
default:other::r-x
이제 /test
디렉토리에쓰다그룹 권한. 이용해서 getfacl ...
알아냈어요기본 게스트 사용자권한이 있지만 rwx
앞서 말했듯이 상속하는 데 사용됩니다. 따라서 귀하의 경우 dog
사용자가 디렉토리에 쓸 수 있도록 하려면 /test
다음을 사용하십시오 setfacl -m dog:rwx /test
.
기본 ACL 또는 상속된 ACL 정보
- 다음을 설정하겠습니다.전방십자인대그리고기본 액세스 제어 목록:
#ACL
setfacl -m guest:rwx /test
#Default ACL
sudo setfacl -dm guest:r /test
- 이제 사용자 아래에 디렉터리를 만듭니다
/test
.guest
(user:guest) /test: mkdir only_r
(user:guest) /test: ls -ld only_r
drwxr-xr-x+ 2 guest guest 4096 Dec 1 19:19 only_r/
(user:guest): getfacl -e only_r
# file: only_r/
# owner: guest
# group: guest
user::rwx
user:edgar:r-- #effective:r--
user:guest:r-- #effective:r--
group::r-x #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:user:edgar:r-- #effective:r--
default:user:guest:r-- #effective:r--
default:group::r-x #effective:r-x
default:mask::r-x
default:other::r-x
only_r
이제 디렉토리를 변경하고 파일을 생성 해 보겠습니다.
(user:guest) /test: cd only_r
(user:guest) /test/only_r: touch fuzz
(user:guest) /test/only_r: ls
fuzz
위에서 볼 수 있듯이 ACL이 아직 없었지만 only_r로 변경하고 파일을 만들 수 있었습니다.구현하다그리고쓰다권한(디렉토리에 실행 권한이 없으면 cd
실행할 수 없습니다.) 그러나 Unix 권한 및 소유자가 사용자 및 파일을 drwxr-xr-x+ 2 guest guest
허용하므로 이 동작은 올바른 것입니다.guest
cd
create
/test/only_r
- 마지막으로
edgar
사용자와 함께 몇 가지 파일을cd
생성 해 보겠습니다/test/only_r
.
(user:edgar) : cd /test/only_r
cd: permission denied: /test/only_r
(user:edgar) : echo jaja > only_r/fuzzbuzz
permission denied: only_r/fuzzbuzz