かんたん!アクセス権
7 アクセス権の数値による変更へ - 8 SUID - 9 SGIDへ
 SUIDSet User ID)とは、特殊なパーミッション(アクセス権)の一つで、実行可能ファイルに対して設定できます。

 /etc/passwdファイルはユーザー名やパスワードなどのユーザーアカウント情報を格納するファイルです。このファイルはパーミッションが「rw-r--r--」となっていて、所有者である「root」以外は書き込みができません。
 例えば、viのようなテキストエディタはパーミッションが「rwxr-xr-x」となっていて誰でも実行(起動)可能ですが、viで/etc/passwdファイルを直接編集しようとした場合、ファイルのほうのパーミッションによって、一般ユーザーは書き込みができません。
図1

 しかし、一般ユーザーがpasswdコマンドで自身のパスワードを変更すると、新しいパスワードは/etc/passwdファイルに保存されます。
 つまり、一般ユーザーが/etc/passwdファイルに書き込めたことになります。

 同じ一般ユーザーで実行しているのに、/etc/passwdファイルに書き込めなかったviエディタと、書き込めたpasswdコマンドの違いは何でしょうか?
 それは、passwdコマンドには特殊なパーミッションであるSUIDが設定されているということです。

 SUIDが設定されたコマンド(ファイル)を実行すると、ファイルの所有者の権限で実行されます。passwdコマンドにはSUIDが設定されているので、誰が実行したときでも所有者である「root」の権限で実行され(所有者である「root」のUser IDSetされ)、「root」なので/etc/passwdファイルに書き込むことができるわけです。
図2

 SUIDを設定するには、chmodコマンドで所有者「u」に対して権限「s」を追加します。以下のように/bin/viにSUIDを設定すると、一般ユーザーでもviで/etc/passwdファイルを直接編集することができるようになります。
実行例1

 SUIDが設定されたファイルのパーミッションの数値表記は、3桁の数値表記に「4000」を加えたものになります。上の例の場合、/bin/viのパーミッションは「rwxr-xr-x」で「755」でしたが、SUIDを設定したことで「rwsr-xr-x」、数値表記は「4755」となります。


ヒント
 ・/etc/passwdファイルはviで自由に編集されると、書式などが崩れ、ユーザがログインできなくなる恐れがあります。一方、passwdコマンドは書式を保ち、適切に編集してくれます。編集対象となるファイルのパーミッションを緩める(全てのユーザに書き込み権限を与える)ことなく、特定のプログラム(コマンド)からのみ編集することができるようにする仕組みがSUIDです。
 ・/bin/viに設定したSUIDは「chmod 755 /bin/vi」で元に戻しておきましょう。



かんたん!アクセス権
0アクセス権の概要
1所有者・所有グループ
2所有者の変更
3所有グループの変更
4アクセス権
5アクセス権の数値表記
6アクセス権の変更
7アクセス権の数値による変更
8SUID
9SGID
10スティッキービット
11デフォルトのアクセス権
12ファイルの拡張属性変更
その他のLinux関連コンテンツ
viをマスターしよう!
シェルスクリプト講座
テキスト処理コマンド
ファイル操作コマンド
ユーザー管理コマンド
ファイル検索コマンド


Yahoo!ブックマークに登録 Googleブックマークに登録 はてなブックマークに登録 livedoorブックマークに登録 deliciousブックマークに登録 Buzzurlブックマークに登録


トップ | このサイトについて | 管理者へメール | サイトマップ
Google www una.soragoto.net  
Copyright(c) 2009 - 2012 una All Rights Reserved.