アクセラと+αな生活
アクセラとα350と共に過ごす気まぐれ日記です。
Firefox ブラウザ無料ダウンロード
2017年10月
≪09月  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31    11月≫
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
VineLinux TIPS集(setUIDビット)
「passwd」コマンドはパスワードを変更できるコマンドです。
「passwd」は一般ユーザでも実行でき、変更後のパスワードは暗号化されて、「/etc/shadow」(シャドーパスワードファイル)に保存されます。

さて、Unix/Linux の権限を考えると、ここで一つ疑問がでてきます。。。



まずは、「/etc/shadow」の権限を見てみましょう。
# ls -l /etc/shadow
-r-------- 1 root root 935 mm月 dd日 hh:mm /etc/shadow

「/etc/shadow」は所有者が「root」で、「root」ユーザで Read 可能な権限設定になってますね。
ということは、一般ユーザでは書込みどころか、読み込むこともできまないはずですね。

でも、「passswd」コマンドは一般ユーザで実行でき、変更された暗号パスワードを「/etc/shadow」へ保存しています。。。

なんで、権限を無視して、そんなことできるの???




これは、「passswd」コマンドが「SetUID ビット」という特殊なフラグを持っているからです。
「SetUID ビット」がオンの場合、一般ユーザーで実行されたコマンドがプロセス化される際に、該当の一般ユーザから「root」ユーザへ切り替わるという動作をします。
(このような場合、コマンドを実行したユーザを実ユーザ(real user)、そのプロセスの所有者を実効ユーザ(effective user)と呼んだりします)

このように「passwd」を実行しているプロセスの所有者が「root」になるため、「/etc/shadow」を変更できるのです。

ちなみに、「SetUID ビット」がオンの場合、所有者の実行権が通常の「x」ではなく「s」になってます。
# ls -l /usr/bin/passwd
-r-s--x--x 1 root root 15404 mm月 dd日 hh:mm /usr/bin/passwd*


【「SetUID ビット」の変更】
属性の変更は「chmod」で可能です。

例えば、「cat」コマンドに「SetUID ビット」をオンにするには、
# ls -l /bin/cat
-rwxr-xr-x 1 root root 39805 mm月 dd日 hh:mm /bin/cat*

「SetUID ビット」をオンにする
# chmod u+s /bin/cat
# ls -l /bin/cat
-rwsr-xr-x 1 root root 39805 mm月 dd日 hh:mm /bin/cat*

「SetUID ビット」をオフにする
# chmod u-s /bin/cat
# ls -l /bin/cat
-rwxr-xr-x 1 root root 39805 mm月 dd日 hh:mm /bin/cat*


cat コマンドで「SetUID ビット」をオンにすると、どのユーザでも、全てのファイルを見ることができるようになります。
(今は実験のために権限を変更してますが、本来はこんなことをしてはいけません。。。)




Unix/Linux の権限は奥が深いですね。。。

運用面では、「SetUID ビット」を変更する運用はあまりないでしょうね。

Unix/Linux がこんな動きをしている。。。ということを理解するのには面白い例なんですけどねww


コメント
この記事へのコメント
URL :
コメント :
パスワード :
管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
Template designed by アクセラと+αな生活

Powered by .
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。