일반적으로 setgid 또는 SGID라고 부르는 set-group-ID 비트에는 중요한 용도가 두 가지 있습니다. 실행 가능한 일반 파일에서는 새 프로세스의 유효 그룹 ID를 바꿀 수 있습니다. 디렉터리에서는 새로 만든 항목이 디렉터리 그룹을 상속하게 하므로 협업 트리에 특히 유용합니다.
권한 · 레슨 6
Setgid
set-group-ID가 실행 파일 자격 증명과 공유 디렉터리의 그룹 상속에 영향을 주는 방식을 배웁니다.
실행 파일의 Setgid
긴 목록은 그룹 실행 위치에 setgid를 표시할 수 있습니다.
$ ls -l /path/to/program
-rwxr-sr-x 1 root operators 24576 Jan 10 09:30 /path/to/program
소문자 s는 setgid와 그룹 실행이 모두 설정되어 있음을 뜻합니다. 대문자 S는 setgid가 설정되었지만 그룹 실행은 없다는 뜻입니다.
커널이 실행 중 이 비트를 적용하면 프로세스는 실행 파일의 그룹 소유자를 기준으로 한 유효 그룹 ID를 받습니다. nosuid 마운트 같은 제어가 동작을 억제할 수 있으며 모든 파일 형식이나 환경에 대한 보편적인 보장으로 다루면 안 됩니다.
실행 파일의 setgid가 적용될 때 실행 파일의 그룹 소유자에서 가져오는 자격 증명은 무엇인가요?
디렉터리의 Setgid
디렉터리의 setgid는 다른 목적을 갖습니다. 새 파일과 하위 디렉터리는 일반적으로 생성자의 기본 그룹 대신 디렉터리 그룹을 상속합니다. Linux에서는 새 하위 디렉터리도 setgid 비트를 상속하여 공유 프로젝트 트리가 일관된 그룹을 유지하도록 돕습니다.
Setgid 자체가 그룹 쓰기 접근을 부여하지는 않습니다. 디렉터리 모드, 프로세스 umask, 요청된 생성 모드, 기본 ACL 및 기타 제어가 여전히 접근을 결정합니다.
$ sudo chgrp developers /srv/project
$ sudo chmod g+s /srv/project
$ ls -ld /srv/project
drwxr-sr-x 2 root developers 4096 Jan 10 09:30 /srv/project
/srv/project의 setgid는 일반적으로 새로 만든 파일이 무엇을 상속하게 하나요?
Setgid 설정하고 제거하기
기호 방식으로 비트를 설정합니다.
$ sudo chmod g+s myfile
선행 8진수 2로 일반 모드 비트와 함께 설정합니다.
$ sudo chmod 2755 myfile
chmod g-s myfile로 특수 비트만 제거합니다.
Setgid가 선행 특수 비트 8진수 숫자에 더하는 값은 무엇인가요?
공유 디렉터리 안전하게 사용하기
협업 디렉터리에는 의도한 그룹 소유자, setgid, 좁게 선택한 접근 비트를 결합합니다. 대표 사용자로 생성을 시험하고 ls -ld로 결과를 확인하세요. 그룹 공유 문제를 해결하려고 트리를 모두에게 쓰기 가능하게 만들지 마세요. 전용 그룹, 적절한 umask나 기본 ACL, setgid 디렉터리가 일반적으로 더 명확한 제어를 제공합니다.
Setgid만 설정하면 그룹 구성원이 디렉터리에 파일을 만들 수 있나요?
레슨 완료
Setgid 완료
이제 setgid가 실행 파일과 디렉터리에서 갖는 의미를 구분할 수 있습니다.
그룹 실행 위치에서 setgid를 알아볼 수 있습니다.
실행 파일 setgid를 유효 그룹 ID와 연결할 수 있습니다.
디렉터리 setgid로 공유 트리의 그룹 소유권을 유지할 수 있습니다.
일반 쓰기 접근과 혼동하지 않고 비트를 설정하거나 제거할 수 있습니다.