"app" 그룹의 누구든지 기존 UNIX 권한에 관계없이 /usr/local/users/app에 포함된 모든 파일을 편집할 수 있도록 setfacl을 사용하고 싶습니다. 두 명의 사용자 John과 Ben이 있습니다. 따라해보려고 했는데다른 질문에 대한 지침, 그러나 John은 일부 파일에 쓸 수 없습니다. 이는 ACL 마스크 때문인 것 같습니다. 그런데 rwx 디렉토리에 기본 마스크를 설정했는데, 그 안의 파일이 생성될 때 이를 상속받아야 하지 않나요?
예를 들어 John은 아래 파일에 쓸 수 없지만 파일에 acl을 작성한 "app" 그룹의 구성원이므로 파일을 편집할 수 없다는 것에 놀랐습니다.
ben@app1:/usr/local/users$ ls -la app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
-rw-r--r--+ 1 ben users 38326 Apr 2 10:21 app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
ben@app1:/usr/local/users/app$ getfacl app-1.0-SNAPSHOT/lib/
# file: app-1.0-SNAPSHOT/lib/
# owner: ben
# group: users
user::rwx
group::rwx #effective:r-x
group:app:rwx #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::rwx
default:group:app:rwx
default:mask::rwx
default:other::r-x
ben@app1:/usr/local/users$ getfacl app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
# file: app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
# owner: ben
# group: users
user::rw-
group::rwx #effective:r--
group:app:rwx #effective:r--
mask::r--
other::r--
답변1
getfacl이 던지는 "유효한" 주석을 확인할 수 있습니다. 문제는 "응용 프로그램"에 쓰기 비트가 설정되지 않도록 권한이 계산된다는 것입니다. 이는 파일의 마스크가 읽기 전용으로 설정되어 있기 때문에 발생합니다. 마스크는 특정 파일이나 디렉터리에 부여할 수 있는 권한 수를 제한하는 데 사용됩니다.
이 동작을 원하는 이유의 예는 파일에 액세스하기 위해 합법적으로 다른 사용자/그룹이 필요할 수 있다는 것을 알고 있지만 어떤 이유로 권한이 상황을 복잡하게 하고 다른 사용자/그룹에 관계없이 "표현"하는 방법을 원하는 경우입니다. " 기본 권한은 그룹 멤버십이나 나중에 실행되는 재귀 setfacl에 관계없이 설정됩니다.이런 건 절대 공개하지 마세요.! ” 소유 사용자는 POSIX 세계에서 특별한 지위를 가지며, 루트가 아닌 권한, 파일 권한 변경 권한 등 다른 사용자에게 없는 권한을 가지며 그 권한은 마스크로 제한되지 않습니다(무의미함). 어쨌든 시스템이 그들에게 첫 번째 권한을 부여하기 때문입니다. 마스크가 제한되어 있음에도 불구하고 여전히 rwx를 얻는 이유입니다.
그러나 귀하의 특정 질문에 대답하려면: 파일 마스크에 쓰기 비트를 추가하고 사용자로 다시 시도하십시오 john
.
여기위 설명의 명령줄 버전입니다. 마스크만 수정하면 "유효" 권한이 어떻게 변경되는지 참고하세요.
답변2
그것은 불가능. cp, rsync 등은 파일 생성 시 기본 ACL을 무시합니다.