こんにちはユキトモです。
今回は「/etc/shadow」ファイルについて解説していきます。
この記事でわかること
- 「/etc/shadow」ファイルの概要が分かります。
「/etc/shadow」ファイル
ひとことで言うと
「パスワードのデータを一般ユーザから見えないようするためのファイル」
です。
筆者の環境の例を抜粋して記すと
/etc/shadow
 
root:$6$q.DUhSu9DMD7UatR$KJIT/ZfZPWgj3qTiJwWATURHGuCvJJo747OXNe5yIXaOTU3GAjbC3TGjJAnbr0EcvfDoz1nCUaqdpKBRXyZ/./::0:99999:7:::
bin:*:18307:0:99999:7:::
(略)
oracle:$6$q.GuSlGN1xD1jYnW$6Ww/qNUAuXK7I/qkxeHl4ua/DgHQceP6UnrI974KMCNK6hDUAJDRmqm198dB03MRO6lfqss/ff7ClkdO7Xj2E0:19329:0:99999:7:::
user01:!!:15500::::::
シャドウパスワードの仕組みで利用されます。
パスワードのデータを一般ユーザから見えないようするための仕組みです。
従来はパスワードは「/etc/passwd」ファイルに記述されていました。
ですが、「/etc/passwd」ファイルはOSのユーザであれば誰でも読み取りができます。
セキュリティ上良くないので、パスワードを「/etc/shadow」ファイルに格納し、
「/etc/passwd」ファイルにはパスワードを記述しないという方法に切り替えられました。
「/etc/shadow」ファイルは所有者(通常はroot)以外は読みとることができないようになっています。
一般のユーザでは参照できないように権限が設定されています。
各行は「:」で各情報が区切られています。
書かれている意味は
第1フィールド | ユーザ名 |
第2フィールド | パスワード |
第3フィールド | パスワードを最後に変更した日 |
第4フィールド | 変更可能最短期間 |
第5フィールド | 未変更可能最長期間 |
第6フィールド | 未変更時警告日 |
第7フィールド | ログインしない場合に無効になる日数 |
第8フィールド | アカウントが失効になるまでの日数 |
第9フィールド | フラグ |
第2フィールドのパスワードは暗号化されていて、元のパスワードがわからないようになっています。
第2フィールドが「*」になっている場合は、パスワードが設定されておらず、
そのユーザはログインできません。
これは、OSがプログラムを動作させるために作成したユーザなどに使用されます。
パスワード欄の頭に「!!」を付けると、「アカウントロック」という状態になります。
この場合は、そのユーザはログインできなくなります。
アカウントロックの例を記します。
アカウントロック
 
user01:!!:15500::::::
アカウントロックは、passwdコマンドに-lオプションを付けることで実現できます。
第2フィールドが「!!」だけとなっている場合には、パスワードが未設定ということになります。
第4フィールド ~ 第8フィールドは、
usermodコマンドやchageコマンドなどを実行することで設定できる内容です。
現在のLinuxOSの多くのディストリビューションでシャドウパスワードを採用しています。