setgid를 사용하는 공유 디렉터리가 예상대로 작동하지 않습니다.

setgid를 사용하는 공유 디렉터리가 예상대로 작동하지 않습니다.

동일한 디렉토리를 공유하려는 개발자 그룹이 있습니다. 나는 이 개발자들과 함께 새 그룹을 만들고 그들을 위한 디렉토리를 만들었습니다. 해당 디렉토리에서 그룹을 내가 만든 그룹으로 설정하고 setgid 비트를 설정했습니다.

모두 괜찮습니다. 파일과 디렉토리는만들어진이 공유 디렉터리에 대한 올바른 권한이 있어야 합니다. 그런데 개발자가 사용한 앱이 예상치 못한 권한을 발생시키는 작업을 하고 있었습니다. 파일 및 디렉터리는 공유 디렉터리의 그룹이 아닌 사용자 그룹을 사용하여 생성됩니다. 디렉터리에서 setgid 비트가 설정되지 않았습니다.

내 거추측하다무슨 일이 일어나고 있는지는 애플리케이션이 다른 위치(예: /tmp)에 디렉터리 계층 구조를 생성하고 완료되면이동하다공유 디렉토리로. 그렇지 않다면 그런 것입니다. 지금까지 내 해결책은 권한을 수동으로 조정하는 것입니다. 올바른 권한이 없는 파일과 디렉터리를 검색합니다.찾다그런 다음 이 목록은 다음으로 파이프됩니다.매개변수. 이것은 지속적인 문제이므로 다음을 사용할 수 있습니다.훌륭한개발자에게 권한을 직접 수정할 수 있는 방법을 제공합니다.

더 나은 해결책이 있습니까?

답변1

안녕하세요, StackExchange에 오신 것을 환영합니다.

이것이 어떻게 발생하는지에 대한 귀하의 가설은 합리적으로 들리지만 이것이 문제의 원인인지 실제로 확인해야 합니다.

이것이 실제로 문제의 원인이라고 판단되면 공유 디렉터리에 임시 디렉터리를 생성하도록 애플리케이션을 구성하는 것이 좋습니다.

이것이 가능하지 않은 경우, 다른 접근 방식은 /tmp에서 디렉터리가 생성된 위치를 찾아(충돌을 방지하기 위해 응용 프로그램을 실행하는 사람의 사용자 이름이나 사용자 ID로 이름을 지정할 수 있음) 이를 공유 디렉터리에 심볼릭 링크하는 것입니다.

또는 개발자가 사용 중인 실행 파일 그룹을 공유 디렉터리의 실행 파일 그룹으로 변경한 다음 실행 파일에 setgid 비트를 설정해 볼 수도 있습니다. 이렇게 하면 애플리케이션이 공유 그룹 ID로 실행되고 실행 파일이 특정 작업을 수행하지 않는 한 애플리케이션이 실행 중인 프로세스 그룹이 포함된 디렉터리를 생성하게 됩니다.

마지막으로 가장 매력적인 솔루션은 공유 디렉터리의 권한을 업데이트하기 위해 주기적으로 실행되도록 cronjob을 설정하는 것입니다.

관련 정보