LoginSignup
12
11

More than 5 years have passed since last update.

Linuxのパスワード変更の仕組み

Last updated at Posted at 2015-11-27

Linuxユーザは下記のコマンドを使用して自分のログインパスワードを変更することができます。

/usr/bin/passwd

全ユーザのパスワード情報は下記のファイルに保存されています。これをシャドウファイルといい
ます。

/etc/shadow

しかしここで不思議なのはシャドウファイルはroot権限でしか編集できないのです。

ls -l /etc/shadow
-rw-r----- 1 root shadow 0000 Jan 01 00:00 /etc/shadow

passwdプロセスはユーザによって実行されるのでroot権限はもっていません。
よってpasswdプロセスは直接シャドウファイルを編集できないはずです。別プロセスがシャドウファイルを代行で編集しているのかとも思いましたが違うようです。

実はLinuxのパーミッションにはsetuidアクセス権というものがあり、これが設定されているコマンドはそのプロセスを実行ユーザとは別のアクセス権で実行することができます。
ls -lコマンドでpasswdのファイルを見るとsetuidが設定されてることが確認できます。
(ユーザの実行権限がsになってることがsetuidが設定されている印です。)

ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 00000 Jan 01  0000 /usr/bin/passwd

この仕組みによって一般ユーザがpasswdを実行した後、passwdプロセスがroot権限で実行され、シャドウファイルを編集することでパスワードを変更しているようです。

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11