【linux】ユーザーにパスワードが設定されているかどうか確認する
問題
あるLinuxのユーザーアカウントに、パスワードを付与したかどうか記憶がない。
パスワードが設定されているか、それともパスワードがないか確認できる?
答え
方法を2つ。
/etc/shadowを見てしまう
/etc/shadow は、パスワード等が保存してあるデータベースのようなファイル。
root権限があるなら/etc/shadowを見てしまえば、パスワードが設定されているかどうか、最後に変更されたのがいつかなどが分かる。
例)
root:$1$abcedefghijklmnioqrstuvwxyz1234:14481:0:99999:7::: bin:*:14344:0:99999:7::: daemon:*:14344:0:99999:7::: ...... ...... mailman:!!:14481:::::: testuser:$1$szDKmoXU$XSOKAOsT1ZKP7s1B2ofHK1:14485:0:99999:7:::
書いてある内容は、コロン(:)で分割して右から以下のとおり。
第1フィールド: ユーザ名(ログイン名)
第2フィールド: 暗号化されたパスワード
第3フィールド: パスワードの最終変更日 ← 1970年1月1日からの日数
第4フィールド: 変更可能最短期間(この期間を越えないと変更不可) ← 「0」はいつでも変更可能
第5フィールド: 未変更可能最長期間(この期間を越えたら変更必要)
第6フィールド: 警告日(上記期日の何日前に警告するか)
第7フィールド: インアクティブ(ログインしないと無効になる日数)
第8フィールド: 失効日(アカウント失効までの日数)
第9フィールド: フラグ(未使用)
2番目に暗号化されたパスワードが入っていない → 一度もパスワードを設定していないはず。
3番目に何か数字が入っている → 最後にその日に変更があったはず。
といったことが分かる。
chageコマンド
changeと読み間違いそうなつづりですが、chageコマンドです。
-l オプションとユーザー名を指定して実行すると、そのユーザーのパスワードの最終更新日、パスワードにまつわる諸設定を見ることができる。
出力例)
# chage -l testuser Last password change : Aug 29, 2009 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
コメント