FreeNAS 서버에 git 서버를 설정하려고 합니다. 내가 겪고 있는 문제는 내가 원하는 방식으로 다른 사용자/그룹에 대한 권한을 설정하는 것입니다.
기본적으로 저는 두 개의 서로 다른 그룹을 가지고 있습니다. 하나는 모든 리포지토리가 포함된 디렉토리에 액세스 git-auth-user
할 수 있는 모든 사용자를 포함하고 ( 제가 생각하는 디렉토리로만 제한해야 하지만 지금은 세부 사항에 불과합니다) 기본적으로 git 데몬입니다. 프로세스에는 읽기 전용 액세스 권한이 부여되어야 합니다.rwx
x
git-unauth-user
setfacl -m "g:git-auth-user:rwx:fd:allow" git/
나는 달리면 나에게 모든 권리가 주어질 것이라고 생각했지만 git-auth-user
그렇지 않았습니다.
검색해 보면 클래식 권한이 여전히 ACL이 할당할 수 있는 전체 권한을 제한하는 것 같습니다. 이는 기본적으로 others
모든 권한을 부여해야 한다는 의미입니까(기본적으로 chmod 777 dir
)? 그러나 나는 ACL을 통해 자신의 권리가 제한되지 않은 모든 사람도 전체 액세스 권한을 가질 것이라고 가정하고 있는데 이는 분명히 내가 원하는 것이 아닙니다.
other
ACL을 통해 배포하려는 가장 허용적인 권한 으로 클래식 권한을 설정해야 하는 문제를 해결할 수 있는 방법이 있습니까 ? 그렇지 않은 경우 특별 액세스 권한이 부여되지 않은 모든 사람의 액세스를 완전히 거부하는 ACL이 있습니까?
편집하다:
ls -la
(그래서 chmod 770
디렉토리의 경우)
drwxrwx---+ 2 root wheel 2 Jun 22 23:45 git
그리고
$ getfacl git/
# file: git/
# owner: root
# group: wheel
group:git-auth-user:rwx-----------:fd----:allow
owner@:rwxp--aARWcCos:------:allow
group@:rwxp--a-R-c--s:------:allow
everyone@:------a-R-c--s:------:allow
이제 이 그룹의 사용자가 내가 얻은 git-auth-user
디렉토리 내에 새 디렉토리를 생성하려고 하면git
$ mkdir test.git
mkdir: test.git: Permission denied
반면에 이것을 사용하면 잘 작동하지만 모든 사람에게 디렉토리에 대한 전체 액세스 권한 을 chmod -R 777 git
부여하기 때문에 분명히 매우 나쁜 솔루션입니다 git-auth-user
. git-ro
디렉터리에 대한 액세스) 디렉터리에 액세스하면 이제 ACL을 기반으로 해당 사용자에 대한 모든 권한을 구체적으로 제거할 수 있지만 이는 분명히 확장되지 않으며 내가 간과하고 있는 질문에 대한 더 나은 솔루션이 있어야 한다고 확신합니다.
답변1
ACL이 있는 경우 일반적인 chmod 비트를 재정의합니다. 또한 NFSv4 ACL에는 마스크가 없습니다.
여기서 문제는 "rwxp"가 아닌 "rwx"만 설정했다는 것입니다. "p"는 APPEND_DATA/ADD_SUBDIRECTORY이며, 하위 디렉터리 추가를 제어합니다.
답변2
ACL을 사용하는 경우 클래식 그룹 권한은 마스크라고 불리며, 예를 들어 setfacl당 효과적으로 부여할 수 있는 최대 권한을 결정합니다.
ls -k shows
-rw-r--r--+ root root
당신은setfacl -m g:users:rw
마스크는 읽기 전용이므로 getfacl은 다음을 알려줍니다.
group:users:rw
effective r
따라서 클래식 chmod 그룹을 rw 또는 rwx로 설정하면 setfacl을 통해 모든 권한을 부여할 수 있습니다.
추신.
이것은 Linux ACL 처리입니다. ZFS가 포함된 Solaris는 약간 다르다고 생각합니다. ZFS가 포함된 BSD가 이를 어떻게 처리하는지 잘 모르겠습니다.
한번 시도해 보시고 결과를 여기에 게시해 보세요.