[server] 특정 디렉토리에서 새 파일에 대한 기본 그룹 및 권한 지정

여러 사용자가 공유하는 프로젝트가있는 특정 디렉토리가 있습니다. 이 사용자는 SSH를 사용하여이 디렉토리에 액세스하고 파일을 수정 / 작성합니다.

이 프로젝트는 특정 사용자 그룹 만 쓸 수 있어야합니다. “mygroup”이라고합니다. SSH 세션 중에 현재 사용자가 만든 모든 파일 / 디렉토리는 기본적으로 “mygroup”그룹이 소유하고 그룹 쓰기 가능 권한을 가져야합니다.

다음과 같은 권한 문제를 해결할 수 있습니다 umask.

$ cd project
$ umask 002
$ touch test.txt

“test.txt”파일은 이제 그룹 쓰기 가능하지만 “mygroup”이 아닌 기본 그룹 ( “mislav”, 사용자 이름과 동일)에 속합니다. 내가 할 수 chgrp재귀 원하는 그룹을 설정합니다,하지만 난 umask를이 세션 동안 기본 권한을 변경 같은 암시 적으로 일부 그룹을 설정하는 방법이 알고 싶어.

이 특정 디렉토리는 작업 사본과 함께 공유 자식의 repo 내가 원하는 git checkoutgit reset작업은 작업 복사본에서 만든 새 파일에 대한 올바른 마스크와 그룹을 설정할 수 있습니다. OS는 Ubuntu Linux입니다.

업데이트 : 동료는 POSIX ACL 의 getfacl / setfacl을 살펴 봐야한다고 제안 하지만 umask 002현재 세션에서 아래 솔루션을 결합하면 나에게 충분하며 훨씬 간단합니다.



답변

지정된 디렉토리 아래의 모든 파일이 그룹 권한을 상속 받으려면 디렉토리에서 setgid 비트를 사용해야합니다. 이 링크를 참조하십시오 .

 $ mkdir test
 $ sudo chown raphink.staff test
 $ ls -lhd test
     drwxr-xr-x 2 raphink staff 4.0K 2009-12-21 16:19 test
 $ sudo chmod g+s test # Set the setgid bit
 $ ls -lhd test
     drwxr-sr-x 2 raphink staff 4.0K 2009-12-21 16:21 test
 $ touch test/foo
 $ ls -lh test
     total 0
     -rw-r--r-- 1 raphink staff 0 2009-12-21 16:23 foo


답변

기존 폴더를 사용하여이 작업을 수행하려면 모든 하위 폴더에 대해 setgid 비트가 활성화되어 있는지 확인해야합니다. 그러나 파일에는 필요하지 않으며 파일에도 필요하지 않을 수 있습니다. 다음은 모든 하위 폴더에 대해 재귀 적으로 설정하는 방법입니다.

find /path/to/base/dir -type d -exec chmod g+s {} +


답변

소스를 찾을 수 없지만 setgid베어 git 리포지토리에 대한이 문제를 해결하는 데 사용 합니다. 귀하의 경우는 더 이상 사용되지 않으며 경우에 따라 문제가 발생할 수 있습니다.

힘내는 core.sharedRepository깃발을 통해이 모든 것을 처리 할 수 ​​있습니다 . 나는 같은 문제가 있었고 다음과 같이 해결했다.

가정 repogroup이 그룹이고 cdrepo 디렉토리에 있어야 합니다.

먼저 공유 플래그를 group다음으로 변경하십시오 .

git config core.sharedRepository group

참고 : 여기서는 group그룹 이름이 아닌 키워드를 사용해야합니다 . 이것은 옵션을 사용하여 Bare 저장소를 작성하는 것과 같습니다 --shared=group.

그런 다음 전체 저장소의 그룹을 변경하십시오.

chgrp -R repogroup .

기존 디렉토리를 그룹 쓰기 가능 ( g+w)하고 기존 실행 파일도 그룹 실행 파일 ( g+X)이되도록하려면 다음을 수행해야합니다.

chmod -R g+wX .

이 작업을 수행하면 git은 shared=group플래그 를 존중하고 기존 및 새 파일 모두에 대해 다음과 같은 그룹 권한을 관리하므로 다시 umask또는에 다시는 필요하지 않습니다 chgrp.

내가 찾은 소스를 주석에 넣을 것이다.


답변

나는 nix 측에 관해서는 전문가가별로 없지만, 당신이 찾고있는 것을 setgid라고 생각합니다.

여기를 참조 하십시오 .


답변

ACL을 사용하지 않고 Linux / UNIX에서 상위 디렉토리 권한을 상속하는 것은 어렵습니다. 그러나 기본 파일 권한을 할당하는 방법이 있습니다.

부모 디렉토리 권한을 상속받을 수 있습니까?


답변