FreeBSD ハンドブック
Prev | Chapter 13. ユーザと基本的なアカウントの管理 | Next

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

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

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

## 13.5.1. adduser

adduser は、 新しいユーザを登録するためのシンプルなプログラムです。 このプログラムは `passwd` と `group` に新しいユーザのエントリを作成するのと同時に、 ホームディレクトリを作成して `/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: `chfn`、 `chsh` はいずれも、 単に chpass へのハードリンクになっています。 また、`ypchpass`、 `ypchfn` および `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` を指定してください。

Prev | Home | Next
ユーザアカウント | Up | ユーザへの制限と設定