개요
setgid 비트는 파일 시스템 권한의 한 종류로, 파일과 디렉토리에 따라 다르게 동작합니다. 디렉토리에 적용 시, 해당 디렉토리 내에 생성되는 모든 새 파일 및 하위 디렉토리는 부모 디렉토리의 그룹 소유권을 자동으로 상속받습니다. 실행 파일에 적용 시, 해당 파일이 실행될 때 파일 소유자의 그룹 ID로 프로세스가 실행됩니다.
주요 특징
- 디렉토리: 해당 디렉토리 내에 생성되는 파일 및 하위 디렉토리가 부모 디렉토리의 그룹 소유권을 상속받습니다.
- 실행 파일: 해당 파일이 실행될 때 파일 소유자의 그룹 ID로 프로세스가 실행됩니다.
- `chmod` 명령어를 통해 설정 및 해제합니다.
사용 예시
setgid 비트는 `chmod` 명령어를 사용하여 설정합니다. 숫자 모드(2xxx) 또는 심볼릭 모드(g+s)를 사용할 수 있습니다.
디렉토리에 setgid 설정 (심볼릭 모드)
sudo chmod g+s /shared_data
`/shared_data` 디렉토리에 setgid 비트를 설정하여, 이 디렉토리 내에 생성되는 모든 파일과 하위 디렉토리가 `/shared_data`의 그룹 소유권을 상속받도록 합니다.
디렉토리에 setgid 설정 (숫자 모드)
sudo chmod 2770 /shared_data
기존 권한(rwxrwx---)에 setgid 비트(2)를 추가하여 2770으로 설정합니다.
실행 파일에 setgid 설정
sudo chmod g+s /usr/local/bin/my_tool
특정 실행 파일이 항상 특정 그룹 권한으로 실행되도록 합니다. (예: `my_tool`이 `tool_group` 권한으로 실행)
setgid 비트 제거
sudo chmod g-s /path/to/item
파일 또는 디렉토리에서 setgid 비트를 제거합니다.
setgid 설정 확인
ls -l /path/to/item
`ls -l` 명령어를 사용하여 파일 또는 디렉토리의 권한을 확인합니다. 그룹 권한 위치에 's'가 있으면 setgid가 설정된 것입니다.
팁 & 주의사항
setgid 비트는 강력한 기능이므로 사용 시 주의가 필요합니다.
디렉토리 setgid 활용
- 공유 작업 디렉토리에서 여러 사용자가 동일한 그룹으로 파일을 생성해야 할 때 매우 유용합니다.
- 새로 생성되는 파일의 그룹 소유권을 일관되게 유지하여 권한 문제를 줄일 수 있습니다.
실행 파일 setgid 주의사항
- 실행 파일에 setgid를 설정하는 것은 보안 취약점의 원인이 될 수 있으므로 신중하게 사용해야 합니다.
- 신뢰할 수 있고 보안 검증이 완료된 실행 파일에만 적용해야 합니다.
umask와의 상호작용
setgid 비트가 설정된 디렉토리에서 파일이 생성될 때, `umask` 설정도 함께 고려됩니다. `umask`는 새로 생성되는 파일의 기본 권한을 제한하므로, setgid와 함께 적절히 설정해야 합니다.