ユーザーのパスワード

First Edition 2002.6.13
Last Modified 2003.9.24

ユーザーのパスワードを設定する方法、変更する方法などを書いていきたいと思います。
また、パスワードを暗号化して保存する方法についても触れたいと思います。

目次

 1 パスワードを設定する(対象Ver:全て)(2003.9.24)
 2 パスワードを変更する(対象Ver:全て)(2003.9.24)
 3 パスワードファイルの書式(/etc/passwd)(対象Ver:全て)(2003.9.24)
 4 パスワードを暗号化する(pwconvコマンド)(対象Ver:全て)(2003.9.24)
 5 パスワードを非暗号化する(pwunconvコマンド)(対象Ver:全て)(2003.9.24)
 6 パスワードをロックする(ログインできなくする)(対象Ver:全て)(2003.9.24)
 7 スワードのロックを解除する(ログインできるようにする)(対象Ver:全て)(2003.9.24)
 8 シャドウパスワードファイルの書式(/etc/shadow)(対象Ver:全て)(2003.9.24)
 9 パスワードの最低文字数を増やす(対象Ver:全て)(2003.9.24)
 10 パスワードを自動的に生成する(対象Ver:全て)(2003.9.24)
 11 パスワードの自動作成長さを指定する(対象Ver:全て)(2003.9.24)


パスワードを設定する

ユーザーを追加したらパスワードを設定しなくてはいけません。
ユーザーを追加してからそのユーザーに対してパスワードを設定できるのは、ルートだけです。以下のコマンドを実行します。
パスワードは2回入力します。
# passwd lucky
Changing password for user lucky
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully

パスワードを変更する

パスワードを変更するのは、一般ユーザーで行うことができます。
最初に現在のパスワードを入力し、新しいパスワードを2回入力します。
$ passwd
Changing password for lucky
(current) UNIX password: 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully
新しいパスワードは、ある程度の複雑さが必要です。あまり簡単なパスワードだと、設定すらできません。

自分のパスワードを忘れてしまった場合は、ルートにパスワードを変更してもらいましょう。
ルートが一般ユーザーのパスワードを変更する場合は、現在のパスワードを入力する必要はありません。
# passwd lucky
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully

パスワードファイルの書式(/etc/passwd)

ユーザーアカウントに対して設定したパスワードはテキストファイルに保存されています。/etc/passwdファイルになります。
/etc/passwdファイルの記述法は以下のようになっています。
  • ユーザー名:パスワード:ユーザーID:グループID:名前:ホームディレクトリ:シェル
useraddコマンドでユーザーを標準設定で追加した場合は、ユーザーID、グループIDは500以降の連番、 ホームディレクトリは/home/ユーザー名、シェルは/bin/bashとなっているはずです。

/etc/passwd
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
squid:x:23:23::/var/spool/squid:/dev/null
lucky:x:501:501::/home/lucky:/bin/bash p-off:x:500:500::/home/p-off:/bin/bash

パスワードを暗号化する(pwconvコマンド)

/etc/passwdファイルにおいて、ユーザー名の次にくるフィールドには変換されたパスワードがセットされます。
前節の例においては、この部分は"x"という文字列になっていました。これはすでにパスワードが他のファイルに暗号化されて システムに保存されていることを示しています。
暗号化されていない場合、/etc/passwdファイルは以下のようになります。
lucky:jwijiufldvqdx86JbnldflmaZyjrbley:500:500::/home/lucky:/bin/bash
一見パスワードが暗号化されているように見えますが、暗号化されているわけではなく、ある簡単な規則にしたがって 変換されているだけなのです。
/etc/passwdファイルは一般ユーザーで読み込むことができます。ということは、あるユーザーが/etc/passwdファイルの中を見て パスワードを見破ることができるということになります。

Vine2.6r1ではデフォルトでパスワードが暗号化(シャドウパスワード)されていますので、特にパスワードを暗号化する必要はありませんが、 覚書として書いておきます。
# pwconv
このようにすると、パスワードは/etc/shadowファイルに格納されるようになります。(暗号化されたパスワードが格納されたファイル(/etc/shadow)については シャドウパスワードファイルの書式(/etc/shadow)をご覧ください)
パスワードを暗号化してあれば、/etc/shadowファイルに格納され、かつこのファイルはルートしか読み書きできないようになっているので 比較的安全になります。
では、/etc/passwdもルートしか読み書きできないようにすれば良いのかというと、そうではありません。アプリケーション自体が/etc/passwdファイルを 参照するような場合、ルートでしか読み書きできないようになっているとうまく動作しない場合があります。最近ではアプリケーション自体がシャドウパスワードを サポートしている場合が多いので、特別な理由がない限りはシャドウパスワードで運用した方がよいと思います。

パスワードを非暗号化する(pwunconvコマンド)

余程のことがない限り、パスワードの暗号化を無効にする必要はないとは思いますが、覚書として書いておきます。
以下のコマンドを実行するだけです。
# pwunconv
この状態で、/etc/passwdファイルを見てみると、パスワードフィールドにパスワードが入っているのが分かります。

パスワードをロックする(ログインできなくする)

ユーザーアカウントを長い間使うことがなくなった場合(長期出張など)は、パスワードをロックしてログインできないようにする必要があります。 以下のようにします。
# passwd -l user
ただし、ルートだけは該当ユーザーにスイッチできます。
実際にこの操作によって編集されたファイルは、/etc/shadowファイルになります。

/etc/shadow
lucky:!jwijiufldvqdx86JbnldflmaZyjrbley:12316:0:99999:7:-1:-1:0
パスワードフィールドの1文字目に"!"(エックスクラメイションマーク)が追加されます。

パスワードのロックを解除する(ログインできるようにする)

パスワードのロックを解除するには以下のようにします。
passwd -u user
この操作により、/etc/shadowファイルのパスワードフィールドの1文字目の"!"が削除されます。

シャドウパスワードファイルの書式(/etc/shadow)

/etc/shadowファイルには、アカウントの情報が含まれています。

ログイン名
暗号化されたパスワード
1970 年 1 月 1 日から最後にパスワードが変更された日迄の日数
パスワードが変更可となるまでの日数
パスワードを変更しなくてはならなくなる日までの日数
パスワード有効期限が来ることをユーザに警告する日数
パスワード有効期限が過ぎてからアカウントが使用不能になる迄の日数
1970 年 1 月 1 日からアカウントが使用不能になる日までの日数
予約された欄
このファイルは、ルートのみリードできるようになっています。内容を変更する必要があるときは、 useaddや、chageコマンドを使いますので、直接編集する必要はありません。

パスワードの最低文字数を増やす

パスワードの長さは、デフォルトの設定では最低5文字以上となっています。
セキュリティー上、パスワードの最低文字数を増やしたい場合は、/etc/login.defsファイルを編集します。 ルートになって作業します。 /etc/login.defs
PASS_MIN_LEN 8 ←この数値を変更します

パスワードを自動的に生成する

簡単なパスワードを考えるのは簡単ですが、真面目に複雑な長いパスワードを考えるのは大変です。
そこで、パスワードを自動的に生成してくれるコマンドがあります。一般ユーザーでも使用可能です。 デフォルトで9文字のパスワードを生成してくれます。
$ mkpasswd

パスワードの自動作成長さを指定する

mkpasswdコマンドによるパスワードの長さを変えるには、"-l"オプションをつけて実行します。
最低6文字以上を指定します。
mkpasswd -l 10

[HOME]
since 2001.4.22