概要
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と組み合わせて適切に設定する必要があります。