디렉터리의 기본 ACL은 디렉터리 아래에 생성된 파일 및 하위 디렉터리에 상속됩니다.
이것은 일반적인 요구 사항인 것 같습니다. 하위 디렉터리는 기본적으로 실행 가능해야 하지만(예: CD) 파일은 그렇지 않아야 합니다.
하위 디렉터리 및 (하위)파일에 대해 별도의 기본(즉, 상속된) ACL을 설정하거나 이 효과를 얻으려면 어떻게 해야 합니까?
부록:
Raspberry Pi 모델 B, Raspbian, get/setfacl 2.2.51
cat /proc/version
Linux version 3.6.11+ (dc4@dc4-arm-01) (gcc version 4.7.2 20120731 (prerelease) (crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08) ) #474 PREEMPT Thu Jun 13 17:14:42 BST 2013
답변1
기본값만 있지만 파일이 ACL을 상속하면 프로그램이 쓰기 위해 파일을 열 때 설정한 모드를 기반으로 설정되는 마스크로 수정됩니다. (모드는 실제로 umask에 의해 수정됩니다. umask의 비트가 제거되므로 모드 666에 umask 002를 더하면 664가 됩니다.) 예를 들어 모드가 664인 경우 마스크로 인해 rw-
x 플래그가 명명된 모든 acl에 대해 마스크되고 groups 이므로 실제로 실행 권한이 없습니다. 마스크는 패턴의 그룹 비트 또는 chmod(사용된 경우)의 그룹 비트를 기반으로 생성됩니다.
따라서 일반 파일을 생성하면 x
ACL에 설정되지만 차단됩니다. 기본적으로 디렉토리는 모드 755 또는 775(umask에 따라 다름)로 생성되므로 마스크는 rwx
또는 가 됩니다 r-x
. 따라서 ACL의 x 플래그는 여전히 유효합니다.
나는 수도에 대해 혼란스러워하곤 했습니다 X
. 이는 ACL이 동시에 여러 파일에 설정된 경우에만 적용됩니다. 그런 다음 권한을 설정할 수 있습니다. 그러면 X
디렉터리에는 권한이 있지만 x
파일에는 권한이 없습니다.
답변2
ACL을 사용하여 다른 기본 파일 및 디렉터리 권한을 설정할 수 없습니다. 그러나 x
권한도 문제가 되지 않습니다. 기본 ACL을 적절한 디렉터리 권한(예 rwx
: , r-x
또는 ---
)으로 설정합니다. "visible"이 포함되지 않고 그에 따라 파일이 생성됩니다 x
.
생성된 모든 파일 또는 디렉터리~ 해야 하다동반되는 파일 권한 모드(이 매개변수가 없으면 해당 시스템 호출을 호출할 수 없습니다). 대부분의 경우 해당 코드는 rw-rw-rw-
파일 및 rwxrwxrwx
디렉터리에 대한 권한 모드를 사용하며 권한 제거는 기본 ACL(또는 없는 경우 umask)에 그대로 둡니다.
기본 ACL(또는 umask)은 유효 권한을 추가하지 않고 일부만 제거합니다. 따라서 x
기본 ACL에 x
for 디렉터리가 포함되어 있더라도 호출 코드의 for 선택이 존중됩니다.