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.