user1:group1에 속한 파일이 있습니다. 그룹 1의 다른 사용자가 공동 작업을 할 수 있도록 의도적으로 권한 770이 있습니다. user2(group1에 속함)로 파일을 열면 파일을 편집하고 예상대로 변경 사항을 저장할 수 있지만 해당 변경 사항을 저장하면 파일 소유권이 user2:user2로 변경됩니다.
내가 인터넷 검색에서 찾은 가장 가까운 것은 이 질문입니다.파일 저장 시 그룹 소유권이 변경되지 않도록 방지그냥 "그냥 빨아먹어라"라는 뜻인 것 같지만 그게 5년 전 일이에요. 물론 아직까지 리눅스 데스크톱 환경에서 협업을 할 수 없는 것은 불가능한데 제가 뭘 잘못하고 있는 걸까요?
답변1
SGID(그룹 ID 설정) 비트가 디렉터리에 설정된 경우 해당 디렉터리에서 생성된 파일은 생성하는 사용자의 기본 그룹 ID가 아닌 디렉터리의 그룹 ID를 상속합니다. 새 하위 디렉터리도 자동으로 SGID 비트를 설정하므로 이 작업을 수동으로 수행할 필요는 없지만 기존 하위 디렉터리는 수동으로 변경해야 합니다.
답변2
무슨 일이 일어날 수 있는지는 파일을 편집하는 데 사용하는 프로그램이 파일을 저장할 때 새 파일을 생성한다는 것입니다.바꾸다오래된 파일. 새로 생성된 파일은 항상 해당 파일을 생성한 사용자의 소유가 됩니다.
이 문제를 해결하려면(프로그램에 동작을 변경할 수 있는 확실한 방법이 없는 경우) 파일을 새 이름으로 저장한 다음 다음을 실행하세요.
cat newname >oldname
이전 파일( ) oldname
의 내용을 newname
새 파일( )의 내용으로 바꿉니다. 새 파일을 만들지 않고 내용을 자르고 다시 작성하여 이를 수행합니다. 권한 및 소유권과 같은 메타데이터는 변경되지 않습니다. 그런 다음 삭제하십시오 newname
.
또 다른 보다 확실한 해결책은 공동 작업을 위해 유사한 시스템 git
이나 다른 버전 제어 시스템을 사용하는 것입니다. 이를 통해 각 사용자는 자신의 개인 정보를 볼 수 있습니다.복사이러한 파일을 로컬로 처리한 다음 중앙 저장소에 체크인하세요. 파일 소유권 및 권한은 더 이상 문제가 되지 않으며, 누가 언제 무엇을 변경했는지 확인할 수 있는 이점이 있습니다(변경 사항을 롤백하거나 개발을 별도의 분기로 분기하는 것 포함).
사용자의 로컬 컴퓨터에서 변경 사항이 적용되는 동안 프로덕션 시스템에서 파일의 프로덕션 체크아웃을 수행할 수 있습니다. 테스트 결과 예상대로 작동하는 것으로 나타나면 새 프로덕션 복사본이 검사됩니다(무슨 작업을 하든).