setfacl을 사용하여 그룹 구성원이 디렉토리의 모든 파일에 쓸 수 있도록 허용


12

'app'그룹의 모든 사람이 기존 UNIX 권한에 관계없이 / usr / local / users / app에 포함 된 파일을 편집 할 수 있도록 setfacl을 사용하고 싶습니다. 두 명의 사용자 인 john과 ben이 있습니다. 다른 질문 의 지시 를 따르려고 했지만 john은 일부 파일에 쓸 수 없습니다. 이것은 acl 마스크 때문입니다. 그러나 rwx 디렉토리에 기본 마스크를 설정 했으므로 그 안에있는 파일을 만들 때 상속하지 않아야합니까?

예를 들어 john은 아래 파일에 쓸 수 없지만 파일에 acls를 쓰는 '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--

답변:


7

getfacl이 당신에게 던지고 있다는 "효과적인"의견을 보게 될 것입니다. 문제는 "앱"이 쓰기 비트 세트를 얻지 못하도록 권한이 계산되고 있다는 것입니다. 파일의 마스크가 읽기 전용으로 설정되어 있기 때문에 발생합니다. 마스크는 특정 파일이나 디렉토리에 부여 될 수있는 권한의 양을 제한하는 데 사용됩니다.

이 동작을 원하는 이유의 예는 파일에 액세스하기 위해 파일에 다른 사용자 / 그룹이 합법적으로 필요할 수 있음을 알았지 만 어떤 이유로 인해 권한이 복잡 해져서 "다른 것들은 기본 권한은 그룹 멤버쉽 또는 재귀 setfacl이 나중에 실행될 때마다 설정됩니다. 확실하게이 정보를 제공하지 마십시오 ! " 소유 사용자는 POSIX 세계에서 특별한 지위를 가지고 있으며, 루트 권한이없고 파일에 대한 권한을 변경하는 기능과 같이 마스크에 의해 그 권한이 제한되지 않는 등 다른 사용자에게는없는 권한이 있습니다. 어쨌든 시스템이 그들에게 부여하는 첫 번째 특권 때문에 무의미합니다). 이것이 마스크가 제한되어 있어도 여전히 rwx를 얻는 이유입니다.

특정 질문에 대답하려면 : 파일의 마스크에 쓰기 비트를 추가하고 john사용자 로 다시 시도하십시오 .

여기에 "유효"권한을 모든 I 수정 마스크 때 변경하는 방법을주의 깊게 살펴, 위의 설명의 명령 줄 버전입니다.


감사합니다. 정말 답장을 보내 주셔서 감사합니다. 기본 마스크 rwx로 새 파일을 만들 수 있습니까? 몇 가지 자세한 내용으로 질문을 편집했습니다.
— 벤 McCann

예. 마스크는 기본 ACL을 설정할 수있는 범주 (사용자 및 그룹 등) 중 하나입니다. 기본 마스크는 하위 디렉토리로 상속되어 파일에 적용되어야합니다. 예 : setfacl -md : m :: rwx / path / to / Dir
— Bratchley

기본 ACL은 파일이 아닌 하위 디렉토리로 상속되어 ACL을 완전히 쓸모 없게 만듭니다
— Ben McCann

우리가 같은 것에 대해 이야기하고 있는지 확인하기 위해 마스크 항목의 기본 acl에 대해 이야기하고 있습니까? 이것이 내가 시험에서 얻는 것입니다.
— Bratchley

부모 디렉토리의 유효 마스크를 변경 한 후 / testBed에서 새 파일에 대해 위의 테스트를 반복하고 동일한 결과를 얻었습니다 (기본 마스크 항목은 부모의 유효 마스크가 아닌 파일에 적용됨).
— Bratchley

0

불가능하다. cp, rsync 등은 기본 ACL을 무시하고 파일을 만듭니다.

cp가 ACL을 존중하지 않는 이유는 무엇입니까?


부정확 사용자가 이전에 실행했던 것과 동일한 마스크 항목을 실행하여 다른 사람으로부터 잘못된 응답을 받았습니다. cp가 파일을 만들 때 파일 시스템 수준에서 발생하는 기본 ACL 항목을 무시하는 것은 "cp"나 다른 유틸리티가 아닙니다. 이 도구에는 필요한 ACL을 스트라이프 / 추가하기 위해 시스템 호출을 발행하는 옵션이 있지만 그렇게하려면 노력해야합니다.
— Bratchley

그 사실은 ACL 항목에 대한 ACL 항목이 그들이 볼 것으로 기대되는 효과적인 권한에 불과하다는 것을 알 수 있다는 것입니다. "이봐 요, 마스크를 확인하십시오"라고 말할 수있는 완벽한 기회였습니다.
— Bratchley

1
사실, EvilRyry가 마스크에 대해 게시 한 것처럼 보이고 OP가 "작동하지 않음"으로 응답 한 후 getfacl 출력을 게시하여 "felles"가 파일에서 rwx를 얻었음을 보여줍니다. 이 비율에서, 가장 높은 투표 응답은 나의 개인적인 경험과 내가 여기에 예시 한 것들과 일치하지 않습니다.
— Bratchley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.