Linux 그룹 및 파일 권한을 사용하여 여러 사람이 여러 폴더에 있는 파일을 수정하고 삭제할 수 있도록 허용할 수 있습니까? 어떻게?
예를 들어 로컬 컴퓨터에서:
Alice와 Bob이 foo와 bar를 처리하게 하세요.
Alice와 Bob은 foo 및 bar linux 그룹에 있습니다. foo 및 bar 폴더는 루트 전용이며 그룹을 존중합니다.
id Alice
uid=1000(Alice) gid=1000(Alice) groups=1000(Alice),10(wheel),1002(foo),1003(bar)
id Bob
uid=1001(Bob) gid=1001(Bob) groups=1001(Bob),10(wheel),1002(foo),1003(bar)
ll
drwxrwsr-x 7 root foo 4096 Jan 26 09:09 foo
drwxrwsr-x 7 root bar 4096 Apr 13 09:36 bar
Peter는 bar 폴더가 아닌 foo 폴더에서만 작업할 수 있습니다.
id Peter
uid=1002(Peter) gid=1004(Peter) groups=1001(Bob),10(wheel),1002(foo)
리눅스에서 이것이 가능합니까?
저는 GUID 비트와 고정 비트를 사용해 왔지만 둘 다 완전히 충분하지 않았습니다.
Alice와 Bob에게 foo에 대한 액세스 권한을 부여한다는 것은 이들을 foo 그룹에 넣는 것을 의미합니다. 보조 그룹에 foo를 추가해도 Alice와 Bob은 foo 폴더에 액세스할 수 없습니다.
Alice와 Bob은 동시에 foo 및 bar 기본 그룹에 속할 수 없습니다. 이것이 제가 이 질문을 하는 이유입니다.
답변1
두 명의 사용자가 동일한 공유 폴더에 있는 동일한 파일을 수정하도록 허용할 방법이 없습니다.
일반적인 해결책은 버전 제어 도구를 사용하는 것입니다.
이 특별한 경우에는 여기서 GIT를 사용하므로 괜찮습니다.
그러나 다시 문제가 발생합니다. git이 객체 폴더에 파일만 추가하더라도(이 질문의 대상 프로젝트에서 우리가 알지 못하는 작업을 수행하지 않는 한) git은 이전 두 개의 명명된 객체 하위 폴더도 수집합니다. 파일 제출 해시.
우리는 결국 사용자가 루트로 디렉터리를 생성하여 모든 디렉터리를 생성하지 못하도록 하는 해결 방법을 찾았습니다.
for i in {0..255};do j=$(printf "%02x\n" $i);mkdir -p $j;chmod 2775 $j;done
베어 저장소의 객체 폴더에서 완료하면 이제 모든 것이 잘 작동합니다.