Linux 権限・SUID/SGID 入門|仕組み・危険性・調査と安全な設定方法

  • URLをコピーしました!

Linux のファイル/ディレクトリ権限で悩んだことはありませんか?
特に SUID(Set User ID)SGID(Set Group ID) は便利な反面、セキュリティリスク につながるため、用途・仕組み・設定時の注意点を正しく理解する必要があります。

本記事では、SUID/SGID の意味、パーミッションとの違い、実務での使いどころ、誤設定による脆弱性リスクまで徹底解説します。

📚 Linux学習の全体像を知りたい方へ
初心者から現場レベルまでの学習順をまとめたロードマップはこちら。
Linux学習ロードマップ完全版

目次

目次

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 権限管理において強力な機能ですが、**意図しない設定はセキュリティリスクを引き起こします。
本記事のように仕組み・危険性・調査方法・安全な設定手順を理解して、確実で安全な権限管理を実践しましょう。

目次