13.5. アカウント情報の変更

強力で柔軟性に富むアカウント情報の変更手段として、 pw があります。 しかし、新しいアカウントをつくる場合は adduser を、 アカウントを削除する場合は rmuser を使うことが推奨されています。

chpass を使うことで、 システム管理者、通常のユーザはパスワード、シェル、 その他の個人情報を変更することができます。 また、特にパスワードを変更する場合には、 通常 passwd の方が良く使われます。

13.5.1. adduser

adduser は、 新しいユーザを登録するためのシンプルなプログラムです。 このプログラムは passwdgroup に新しいユーザのエントリを作成するのと同時に、 ホームディレクトリを作成して /usr/share/skel からデフォルトで使用されるドットファイル (訳注: ホームディレクトリに存在する “.” から始まるファイルのことで、各種設定に用いられます) をコピーします。 また、新しく作成されたユーザに対して、 ウェルカムメッセージをメールで送信することも可能です。

初期設定ファイルを作成するには、 adduser -s -config_create とします[1]。 そして次に adduser のデフォルト設定を行ない、 最初のユーザアカウントを作成します。 システムを日常利用する際に root を用いるのは最悪です。

Example 13-1. adduser の設定の変更

# adduser -v
Use option ``-silent'' if you don't want to see all warnings and questions.
Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: csh date no sh tcsh [sh]: tcsh
Your default shell is: tcsh -> /usr/local/bin/tcsh
Enter your default HOME partition: [/home]:
Copy dotfiles from: /usr/share/skel no [/usr/share/skel]: 
Send message from file: /etc/adduser.message no 
[/etc/adduser.message]: no
Do not send message
Use passwords (y/n) [y]: y

Write your changes to /etc/adduser.conf? (y/n) [n]: y

Ok, let's go.
Don't worry about mistakes. I will give you the chance later to correct any input.
Enter username [a-z0-9_-]: jru
Enter full name []: J. Random User
Enter shell csh date no sh tcsh [tcsh]: 
Enter home directory (full path) [/home/jru]: 
Uid [1001]: 
Enter login class: default []: 
Login group jru [jru]: 
Login group is ``jru''. Invite jru into other groups: guest no 
[no]: wheel
Enter password []: 
Enter password again []: 

Name:     jru
Password: ****
Fullname: J. Random User
Uid:      1007
Gid:      1007 (jru)
Class:    
Groups:   jru wheel
HOME:     /home/jru
Shell:    /usr/local/bin/tcsh
OK? (y/n) [y]: y
Added user ``jru''
Copy files from /usr/share/skel to /home/jru
Add another user? (y/n) [y]: n
Goodbye!
#

簡単に上の操作を説明します。 まずデフォルトシェルを tcsh (packages にある追加のシェルです) に変更し、 新しいユーザにウェルカムメッセージのメールを送付しないようにしました。 そしてその設定を保存し、wheel グループ (後に、 これが重要な意味を持っていることがわかるでしょう) に所属する jru というアカウントを作成しています。

Note: 入力したパスワードは画面に表示されません。 アスタリスク記号も表示されませんので、 パスワードを二回とも間違えて入力してしまわないように注意してください。:-)

Note: これ以降はオプション引数をつけず単に adduser を起動します。 デフォルト設定を変更する必要はありません。 もし、adduser がデフォルト設定を変更するかどうか尋ねてきたら、 adduser を終了し、-s オプションを使うようにしてください。

13.5.2. rmuser

rmuser は、 システムからユーザを削除します。 これにはユーザデータベースからの削除だけでなく、 その他、そのユーザに依存する情報すべてが含まれます。

rmuser は次の手順を実行します。

  1. 指定されたユーザの crontab(1) エントリを削除 (存在する場合)。

  2. 指定されたユーザの at(1) ジョブをすべて削除。

  3. 指定されたユーザが所有するすべてのプロセスを強制終了。

  4. ローカルパスワードファイルから、 指定されたユーザのエントリを削除。

  5. 指定されたユーザのホームディレクトリを削除 (ディレクトリの所有者が指定されたユーザのものだった場合)。

  6. /var/mail から、指定されたユーザの到着メールファイルを削除。

  7. /tmp のような一時ファイル保存領域から、 指定されたユーザの所有するファイルを削除。

  8. そして最後に、 /etc/group にある すべてのグループから、指定されたユーザを削除します。

    Note: 指定されたユーザと同じ名前のグループで、 そのユーザが削除されると空のグループとなる場合は、 そのグループ自体が削除されます。 これは adduser(8) によってユーザごとに作成される、 ユニークなグループに対応するものです。



スーパユーザアカウントの削除に rmuser を利用することはできません。 スーパユーザアカウントの削除はほとんどすべての場合、 大規模なシステムの破壊を意味するからです。

デフォルトでは、 どういう操作を行なっているか確認できる対話モードが使われます。

Example 13-2. rmuser による対話的なアカウントの削除

# rmuser jru
Matching password entry:
jru:*:1000:1000::0:0:J. Random User:/home/jru:/usr/local/bin/tcsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing user's incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
#

13.5.3. pw

pw は、 ユーザやグループの作成、削除、 変更および表示を行なうことができ、 システムユーザファイルやシステムグループファイルの編集機能を持った コマンドラインのユーティリティです。

これはシェルスクリプトからの利用や、 直接コマンドを実行する際に便利に使えるように設計されたものです。

詳細はすべて pw(8) に書かれています。

13.5.4. chpass

chpass は、 パスワード、シェル、その他の個人情報といった、 ユーザデータベース情報を変更します。

システム管理者に限りスーパユーザ権限で chpass を用い、 他のユーザの情報やパスワードを変更することが可能です。

ユーザ名の他にオプションを指定しないと、 chpass はユーザ情報を編集するエディタを表示します。 そのエディタを終了すると、 chpass はユーザデータベース情報の変更を試みます。

Example 13-3. スーパユーザによる対話的な chpass

#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1000
Gid [# or name]: 1000
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/tcsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:

通常のユーザは、この情報の限られた部分のみ変更が可能です。 また、変更できるのはそのユーザ自身の情報のみです。

Example 13-4. 通常のユーザによる対話的な chpass

#Changing user database information for jru.
Shell: /usr/local/bin/tcsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:

Note: chfnchsh はいずれも、 単に chpass へのハードリンクになっています。 また、ypchpassypchfn および ypchsh も同様です。 NIS のサポートは自動的に行なわれますので、 コマンドの先頭に yp をつける必要はありません。

13.5.5. passwd

passwd は、 ユーザが自分のパスワードを変更する通常の方法です。 スーパユーザ権限では、 他のユーザのパスワードを変更するのに使われます。

Note: ユーザはパスワードを変更する前に、 もともと設定されていたパスワードを入力しなければなりません。 これはユーザがコンソールを離れた際に、 不審な人物によってパスワードが変更されることを防ぐためです。

Example 13-5. passwd

% passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: done

# passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: done

Note: yppasswd は、 単に passwd へのハードリンクになっています。 NIS のサポートは自動的に行なわれますので、 コマンドの先頭に yp をつける必要はありません。

Notes

[1]

オプション -s をつけると、 デフォルトで詳細を表示しないように adduser を設定します。 この後に詳細を表示させるようにしたい場合は、 オプション -v を指定してください。