SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【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

関連するメモ

コメント