はじめに
SUID
のやり方ってどうだったっけ?
前に SUID
したスクリプトってどこいったっけ?
前に SGID
した共有ディレクトリってその後どうしたっけ?
という時に、読み返すためのメモ。
SUID
、SGID
とは?
Linux の SUID(Set User ID)
と SGID(Set Group ID)
は、ファイルやディレクトリに特別なアクセス許可を設定するための機能。
これらの設定は、ファイルの所有者やグループに関係なく、特定のファイルを実行する際に、ユーザーやグループの権限を一時的に変更することができる。
SUID(Set User ID)
概要
SUID
が設定された実行ファイルは、ファイルの所有者の権限で実行される。
使用例
パスワードの変更
passwd
コマンドは、一般ユーザーが自身のパスワードを変更できるようにするため、SUID
が設定される。
このコマンドは、実行時にroot権限で動作し、システムのパスワードファイルを安全に更新する。
システム管理ツール
特定のシステム管理ツールは、root権限でのみ実行可能ですが、限定的に通常ユーザーにも使用させたい場合にSUID
が使われる。例えば、システムの設定を変更するコマンドなどがこれに該当する。
設定方法
chmod u+s ファイル名
ファイルにSUIDビット
を設定できる。
セキュリティリスク
不正に利用されるとシステムのセキュリティに大きな影響を与える可能性があるため、慎重に使用する必要がある。
SGID(Set Group ID)
概要
SGID
が設定された実行ファイルは、ファイルのグループの権限で実行される。
使用例
共有ディレクトリ
チームやプロジェクトごとのディレクトリに SGID
を設定すると、そのディレクトリ内で作成されたファイルやサブディレクトリは、作成者個人のものではなく、チームやプロジェクトグループに属することとなる。
これにより、グループ内でのファイル共有が容易になる。
共有ファイルの編集
特定のファイルを複数のユーザーが共同で編集する必要がある場合、そのファイルに SGID
を設定することで、新しいファイルやデータが元のグループに所属することとなり、アクセス管理が容易になる。
設定方法
chmod g+s ファイル名
ファイルにSGIDビット
を設定できます。
セキュリティリスク
SUID
と同様、不正利用されるとセキュリティに影響を与える可能性がある。
注意点
SUID
/ SGID
はセキュリティ上のリスクを伴うため、必要な場合にのみ使用し、常にセキュリティを意識することが重要。
定期的なシステム監査を通じて、不要なSUID/SGID設定がないか確認することが推奨される。
不要な SUID
/ SGID
がないか監査する方法
システム上のすべての SUID
/ SGID
設定されたファイルを探すために、find
コマンドを使用できる。
SUID設定されたファイルを探す
find / -perm -4000 -exec ls -ldb {} \;
SUIDビット
が設定されたすべてのファイルをルートディレクトリから探し、それらのリストを表示する。
SGID設定されたファイルを探す
find / -perm -2000 -exec ls -ldb {} \;
SGIDビット
が設定されたすべてのファイルをルートディレクトリから探し、それらのリストを表示する。
さいごに
しっかり理解しておきたい