この記事では、Linuxでのファイルやディレクトリの特殊な権限(SetUID, SetGID, Sticky bit)について詳しく解説します。具体的なコード例とその解説、多彩な応用例を含めています。この特殊な権限を理解し、適切に設定することで、よりセキュアかつ効率的なシステムを構築できます。
特殊な権限とは何か
Linuxでは、通常の読み取り(r)、書き込み(w)、実行(x)といった基本的な権限以外にも、「SetUID」、「SetGID」、「Sticky bit」と呼ばれる特殊な権限が存在します。これらは特定の操作を行う際のユーザーやグループの権限を変更することができ、セキュリティや利便性の向上に役立ちます。
SetUID(Set User ID)
SetUIDは、そのファイルを実行するユーザーが、ファイルの所有者として動作するように設定します。これにより、通常は許可されない操作を行うことができます。
chmod u+s /path/to/file # SetUIDを設定
SetGID(Set Group ID)
SetGIDは、そのファイルを実行するユーザーが、ファイルの所有グループとして動作するように設定します。
chmod g+s /path/to/file # SetGIDを設定
Sticky bit
Sticky bitは、一般的にディレクトリに設定され、そのディレクトリ内のファイルを所有者以外が削除できないようにします。
chmod +t /path/to/directory # Sticky bitを設定
応用例
特殊な権限を用いたいくつかの具体的な応用例を以下に紹介します。
SetUIDとsudo
SetUIDが設定された`sudo`コマンドを使い、一時的にroot権限を得ることができます。
sudo ls /root # rootのディレクトリを一時的に表示
SetGIDと共有ディレクトリ
SetGIDが設定されたディレクトリでは、新しく作成されるファイルもそのディレクトリと同じグループに所属します。
mkdir shared_dir
chmod g+s shared_dir # SetGIDを設定
touch shared_dir/new_file # 新しいファイルもshared_dirと同じグループになる
SetUIDとpasswdコマンド
`passwd`コマンドはSetUIDが設定されており、一般ユーザーでもパスワードを変更できます。
passwd # パスワードを変更する
Sticky bitと/tmpディレクトリ
/tmpディレクトリは多くの場合、Sticky bitが設定されています。これにより、ユーザーは他人のファイルを削除できなくなります。
ls -ld /tmp # /tmpディレクトリの権限を確認
SetGIDと新規ユーザーのデフォルトグループ
新規ユーザーが作成されたとき、そのユーザーは`/etc/skel`ディレクトリの内容をコピーしてホームディレクトリが生成されます。このディレクトリにSetGIDを設定することで、新規ユーザーも特定のグループに所属させることができます。
chmod g+s /etc/skel # SetGIDを設定
まとめ
Linuxにおける特殊な権限(SetUID, SetGID, Sticky bit)は非常に強力で、多くの用途で利用されています。ただし、設定には注意が必要で、特にSetUIDはセキュリティリスクを高める可能性があるため、慎重に扱う必要があります。
コメント