HTTP를 통해 Apache가 제공하는 일부 Mercurial 저장소가 있습니다. 그러나 로컬 저장소를 확인하는 데 필요한 일부 자동화된 테스트를 수행하는 전용 사용자가 있습니다. 최근에는 대용량 파일 하위 디렉터리의 파일에 대한 권한이 부족하여 실패하기 시작했습니다 .hg
.
-rw------- 2 www-data www-data 6.3M 2012-01-02 17:23 9358b828fb64feb37d3599a8735320687fa8a3b2
.hg
기본 umask는 022여야 합니다. 나는 다음과 같이 디렉토리에 setgid 설정을 사용했습니다.여러 커미터 위키 페이지, 그러나 이것은 포함되지 않습니다 .hg/largefiles
. 그러나 내가 이해한 바로는 이 디렉토리에 대해 gid를 설정해도 문제가 해결되지 않습니다. 왜냐하면 hg
이러한 파일에 대한 제한적인 권한을 설정하기 때문입니다. 파일 시스템을 통해 이 저장소에 액세스하려는 다른 사용자도 www-data
이 그룹에 있으므로 그룹에 대한 추가 읽기 권한으로 문제를 해결하기에 충분합니다.
Mercurial이나 시스템이 새 파일에 대해 이 권한을 올바르게 부여하도록 어떻게 설득할 수 있나요?
사용 중인 제품: Mercurial Distributed SCM(버전 2.1)
답변1
이는 Mercurial의 문제인 것으로 밝혀졌으며 Mercurial 2.1에서는 쉽게 수정할 수 없습니다. 방금 보냈어요세 개의 패치이 문제를 수정하려면 Mercurial 메일링 리스트로 이동하세요. 일주일 안에 Mercurial 2.1.1에서 수정 사항을 확인하실 수 있기를 바랍니다.
문제는 대용량 파일 확장자가 .hg/largefiles/<hash>
임시 파일에 데이터를 써서 파일을 생성한 뒤 실제 이름으로 바꿔준다는 점이다. 표준을 사용하여 임시 파일을 생성합니다.tempfile
기준 치수파이썬에서. 600
일반적으로 누구도 임시 파일을 읽지 못하도록 하기 때문에 이 모듈은 권한을 로 제한합니다 . Largefiles 확장은 이를 고려하지 않고 파일 이름만 바꿉니다.
.hg/store
내 패치는 임시 파일을 생성할 때 권한을 고려하여 이 문제를 해결합니다. 이렇게 하면 Mercurial의 나머지 부분과 일치하는 대용량 파일이 제공됩니다.
답변2
Mercurial 답변이 있는지는 모르겠지만 이는 Mercurial이 파일 권한을 선택하는 방법에 따라 작동할 수도 있고 작동하지 않을 수도 있는 일반적인 답변입니다.
파일 시스템에서 ACL(액세스 제어 목록)을 활성화합니다. (바라보다이 답변지침을 위해. ) 그런 다음 액세스가 필요한 다른 사용자 또는 그룹에 액세스를 허용하도록 작업 복사본의 기본 ACL 및 현재 ACL을 설정합니다.
setfacl -R -d -m group:www-data:rwx /path/to/working/copy
setfacl -R -m group:www-data:rwx /path/to/working/copy