Linux のファイル/ディレクトリ権限で悩んだことはありませんか?
特に SUID(Set User ID) や SGID(Set Group ID) は便利な反面、セキュリティリスク につながるため、用途・仕組み・設定時の注意点を正しく理解する必要があります。
本記事では、SUID/SGID の意味、パーミッションとの違い、実務での使いどころ、誤設定による脆弱性リスクまで徹底解説します。
📚 Linux学習の全体像を知りたい方へ
初心者から現場レベルまでの学習順をまとめたロードマップはこちら。
▶ Linux学習ロードマップ完全版
目次
- SUID / SGID とは
- Linux 権限レビュー(基礎のおさらい)
- SUID/SGID の具体例
- 危険性と脆弱性リスク
- SUID / SGID の検索・発見方法
- 安全な設定と外さないポイント
- FAQ
SUID / SGID とは
Linux 権限の世界では、ファイルやディレクトリに特殊なビットを付与することで、通常はアクセスできないファイル/実行を許可する仕組みがあります。代表的なのが:
- SUID(Set User ID):実行時にファイル所有者の権限で実行される
- SGID(Set Group ID):実行時にファイル所有グループの権限で実行される
これによって、一般ユーザーが特権ユーザー(または別グループ)の権限で処理を行わせることができます。
Linux 権限レビュー(基礎のおさらい)
まずは通常の権限システム(rwx)を思い出しましょう。Linux は 3 つの権限カテゴリで動きます:
- 所有者(User)
- グループ(Group)
- その他(Other)
通常の権限は rwx ですが、SUID/SGID はパーミッションにビットを加えることで追加の意味を持ちます。
SUID/SGID の具体例
1. SUID の例(passwd コマンド)
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 123456 Jan 1 12:34 /usr/bin/passwd
ファイル権限に s が見えます。これは SUID が有効という意味です。
passwd は root 権限が必要な操作を行うため、SUID が設定されています。
2. SGID の例(グループを継承するディレクトリ)
$ mkdir /shared
$ chgrp developers /shared
$ chmod g+s /shared
$ ls -ld /shared
drwxrwsr-x 2 user developers 4096 Jan 1 12:34 /shared
この場合、/shared 下で作成されたファイルは自動的に developers グループになります。

危険性と脆弱性リスク
SUID/SGID は強い権限で動作するため、**誤設定が重大な脆弱性につながる**可能性があります。
- 意図しないユーザーに権限昇格の機会を与える
- シェルスクリプトに設定すると環境変数汚染で侵害されるリスク
- バッファオーバーフローなどと組み合わさると root 権限奪取につながる
安全性を担保するためには、**本当に必要な箇所だけに限定して設定する**ことが大切です。
SUID / SGID の検索・発見方法
システム内で SUID/SGID が設定されているファイルを一覧する方法:
全体検索(SUID)
sudo find / -perm /4000 -type f
全体検索(SGID)
sudo find / -perm /2000 -type f
これらのコマンドによって、特権ファイルを把握できます。

安全な設定と外さないポイント
1. 必要性を見極める
単に便利だからという理由ではなく、**具体的な要件がある場合のみ**設定するようにします。
2. シェルスクリプトには注意する
SUID をシェルスクリプトに付与するのは**原則禁止**です。スクリプト解釈時の挙動により容易に誤用されます。
3. 定期的にチェックする
sudo find / -perm /6000 -type f > /root/suid_sgid_list.txt
権限監査の一環として定期チェックを推奨します。
FAQ
Q1. SUID と SGID はどっちが危険?
どちらも高い権限を与えますが、SUID は root 権限につながりやすく、特に注意が必要です。
Q2. SGID がディレクトリに付くと何が変わる?
下の階層でファイルを作成した際、そのファイルも SGID グループが継承されます。
Q3. なぜシェルスクリプトに SUID を付けてはいけない?
スクリプトはシェル解釈されるため、環境変数や PATH の影響を受けて不正利用される可能性があります。
まとめ:
SUID/SGID は Linux 権限管理において強力な機能ですが、**意図しない設定はセキュリティリスクを引き起こします。
本記事のように仕組み・危険性・調査方法・安全な設定手順を理解して、確実で安全な権限管理を実践しましょう。


