첫 번째 명령은 기존 파일 / 디렉토리의 권한을 변경합니다. -d
두 번째 명령은 차례대로 디렉토리 내의 모든 파일에 대한 ACL을 기본 집합을 제공 할 것입니다 어떤 디렉토리에 대한 향후 기본 권한을 설정하는 것이 중요합니다.
참고 : 두 경우 모두 명령이 -R
스위치 를 통해 재귀 적으로 실행됩니다 .
매뉴얼 페이지 -d
에서 스위치에 관해 setfacl
:
-d, --default
All operations apply to the Default ACL. Regular ACL entries in the
input set are promoted to Default ACL entries. Default ACL entries
in the input set are discarded. (A warning is issued if that happens).
이 발췌문은 또한 상당히 잘 설명합니다.
ACL에는 액세스 ACL과 기본 ACL의 두 가지 유형이 있습니다. 액세스 ACL은 특정 파일 또는 디렉토리에 대한 액세스 제어 목록입니다. 기본 ACL은 디렉토리와 만 연관 될 수 있습니다. 디렉토리 내의 파일에 액세스 ACL이없는 경우 디렉토리에 대한 기본 ACL의 규칙을 사용합니다. 기본 ACL은 선택 사항입니다.
출처 : 8.2. 액세스 ACL 설정 .
예
이 디렉토리 구조가 있다고 가정하십시오.
$ tree
.
|-- dir1
| |-- dirA
| | `-- file1
| `-- fileA
`-- file1
2 directories, 3 files
이제 setfacl
질문 의 첫 번째 명령을 사용하여 권한을 설정합시다 .
$ setfacl -R -m u:saml:rwx -m u:samtest:rwX .
결과는 다음과 같습니다.
$ getfacl dir1/ file1
# file: dir1
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
# file: file1
# owner: saml
# group: saml
user::rw-
user:saml:rwx
user:samtest:rwx
group::rw-
mask::rwx
other::r--
-dR
여기서 명령을 실행 하지 않으면 새 디렉토리가 ACL에 포함되지 않습니다.
$ mkdir dir2
$ getfacl dir2
# file: dir2
# owner: saml
# group: saml
user::rwx
group::rwx
other::r-x
그러나이 디렉토리를 제거하고 setfacl -dR ...
명령을 실행하고 위의 작업을 반복하면 :
$ rmdir dir2
$ setfacl -dR -m u:saml:rwx -m u:samtest:rwX .
이제 권한이 상당히 다르게 보입니다.
$ getfacl dir1/ file1
# file: dir1/
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:saml:rwx
default:user:samtest:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
# file: file1
# owner: saml
# group: saml
user::rw-
user:saml:rwx
user:samtest:rwx
group::rw-
mask::rwx
other::r--
이제 새로 생성 된 디렉토리는 다음과 같은 "기본"권한을 선택합니다.
$ mkdir dir2
$ getfacl dir2
# file: dir2
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:saml:rwx
default:user:samtest:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
이러한 권한을 설정 dir2
하면 파일 내에서도 다음 권한이 적용 dir2
됩니다.
$ touch dir2/fileA
$ getfacl dir2/fileA
# file: dir2/fileA
# owner: saml
# group: saml
user::rw-
user:saml:rwx #effective:rw-
user:samtest:rwx #effective:rw-
group::rwx #effective:rw-
mask::rw-
other::r--
app/cache
라는 디렉토리 가 들어있는 디렉토리dev
가 있다면 첫 번째 명령이 적용되지만 두 번째 명령은 적용되지 않습니까? 나중에 다른 디렉토리가 추가되면 (예 :)prod
두 번째 명령이 권한을 설정합니까? 그렇지 않은 경우 두 번째 명령을 건너 뛸 수 있습니까?