기본 ACL rwx를 디렉터리로 설정하고 사용자로 하위 디렉터리를 생성할 수 없습니다.

기본 ACL rwx를 디렉터리로 설정하고 사용자로 하위 디렉터리를 생성할 수 없습니다.

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알 수 있습니다 ./testdrwxr-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 정보

  1. 다음을 설정하겠습니다.전방십자인대그리고기본 액세스 제어 목록:
#ACL
setfacl -m guest:rwx /test

#Default ACL
sudo setfacl -dm guest:r /test
  1. 이제 사용자 아래에 디렉터리를 만듭니다 /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
  1. 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허용하므로 이 동작은 올바른 것입니다.guestcdcreate/test/only_r

  1. 마지막으로 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

관련 정보