LinuCレベル1 101試験の例題と解説
主題1.02ファイル・ディレクトリの操作と管理
1.02.1ファイルの所有者とパーミッション
LinuCレベル1 101試験の出題範囲から「1.02.1 ファイルの所有者とパーミッション」についての例題を解いてみます。
例題
ある開発チームでは、メンバー全員がdevグループに所属しています。チーム全員がソースコードやドキュメントを置くための共有ディレクトリ/sharedを作成しました。
要件は次の通りです。
- メンバー全員が/shared以下にファイルを作成・編集できること
- そのディレクトリ内で新しく作成されるファイルは自動的にdevグループ所有となり、他のメンバーも編集できること
この要件を満たすために、/sharedに設定するべきパーミッションとして最も適切なものはどれか。
- chmod 1777 /shared
- chmod 2775 /shared
- chmod 0700 /shared
- chmod 4755 /shared
※この例題は実際の試験問題とは異なります。
解答と解説
正解は、「2. chmod 2775 /shared」です。
SGIDビット(2)をディレクトリに設定すると、そのディレクトリ内で作成される新しいファイルやディレクトリのグループ所有者が、作成者のグループではなく親ディレクトリのグループに継承されるようになります。この仕組みにより、開発チーム全員が同じグループdevでファイルを共有でき、編集の利便性が保たれます。
各選択肢の詳細を解説します。
1. chmod 1777 /shared
誤りです。
これはスティッキービットを設定した例です。/tmpなどに使われる設定で、他人のファイルを削除できなくする効果はありますが、グループ共有には役立ちません。
2. chmod 2775 /shared
正しいです。
SGIDビットにより、グループの統一が保証されます。
3. chmod 0700 /shared
誤りです。
これはSUIDビットを設定した例で、通常は実行ファイルに適用され、実行時にファイル所有者の権限で動作するようになります。ディレクトリに設定しても効果はなく、意味がありません。
4. chmod 4755 /shared
誤りです。
これはSUIDビットを設定した例で、通常は実行ファイルに適用され、実行時にファイル所有者の権限で動作するようになります。ディレクトリに設定しても効果はなく、意味がありません。
特殊パーミッション(SUID, SGID, スティッキービット)は混同されやすいため、以下のように整理して覚えると効果的です。
SUID(Set UID, 数値: 4xxx)
- 実行ファイルに設定すると、そのプログラムを実行したユーザーが一時的にファイル所有者の権限で実行できる。
- 例: /usr/bin/passwd はSUIDが有効で、一般ユーザーでもパスワード情報(/etc/shadow)を更新できる。
SGID(Set GID, 数値: 2xxx)
- 実行ファイルに設定すると、プログラムがファイルのグループ権限で実行される。
- ディレクトリに設定すると、その中で作成されたファイル・ディレクトリが親ディレクトリのグループを継承する。
- 例: チーム開発用の共有ディレクトリに設定すると便利。
スティッキービット(Sticky Bit, 数値: 1xxx)
- ディレクトリに設定すると、そのディレクトリ内のファイルは所有者またはroot以外は削除できない。
- 例: /tmp ディレクトリに必ず設定されており、複数ユーザーがファイルを置いても互いに削除できないようになっている。
それぞれのパーミッションは以下の方法でも変更することが可能です。
// SUIDの追加
chmod u+s <file>
// SUIDの削除
chmod u-s <file>
// SGIDの追加
chmod g+s <file>
// SGIDの削除
chmod g-s <file>
特殊パーミッションは「SUID=所有者の権限で実行」「SGID=グループ継承やグループ権限で実行」「Sticky=削除制御」と覚えると整理しやすいです。
例題作成者
株式会社デージーネット 経営企画室 小泉麦