EN JA
CHPASS(1)
CHPASS(1) FreeBSD General Commands Manual CHPASS(1)

名称

chpass, chfn, chsh, ypchpass, ypchfn, ypchshユーザデータベース内の情報を編集する

書式

chpass [ -a list][ -p encpass][ -e expiretime][ -s newshell][ user]

chpass [ -oly][ -a list][ -p encpass][ -e expiretime][ -s newshell][ -d domain][ -h host][ user]

解説

chpass ユーティリティは、 user もしくはデフォルトでは、実行したユーザのユーザデータベースの情報を変更します。

chfn, chsh, ypchpass, ypchfn, ypchsh ユーティリティは、 chpass と同じように動作します (プログラムはひとつだけなのです)。

情報は、フォーマットされ、必要な部分をエディタで変更します。

ユーザが変更することができる情報だけが表示されます。

オプションとしては、次のものがあります:

-a
スーパユーザは、ユーザデータベースのエントリを passwd(5) で定義されたフォーマットで引数として直接指定できます。この引数は、コロン (“:”) で区切られたリストであり、空きの部分があっても許されますが、すべてのフィールドをリストにしなければなりません。
-p
スーパユーザは、暗号化されたパスワードフィールドを crypt(3) で用いられているフォーマットで引数として直接指定することができます。
-e expiretime
アカウントが無効となる時を変更します。対話エディタからのようにスクリプトから、無効となる時を変更するために、本オプションを使用します。
-s newshell
ユーザのシェルを newshell に変更しようとします。

表示されるエントリには、以下のものがあります:

Login:
ユーザのログイン名
Password:
ユーザの暗号化されたパスワード
Uid:
ユーザの ID
Gid:
ユーザのグループ ID
Class:
ユーザの一般的な分類
Change:
パスワードの変更時間
Expire:
アカウントの有効期限
Full Name:
ユーザの実際の名前
Office Location:
ユーザのオフィスの場所 (1)
Office Phone:
ユーザのオフィスの電話番号 (1)
Home Phone:
ユーザの自宅の電話番号 (1)
Other Information:
ユーザに関するローカル定義情報 (1)
Home Directory:
ユーザのホームディレクトリ
Shell:
ユーザのログインシェル

注 (1) -
実際の master.passwd ファイルでは、これらのフィールドは、コンマで区切られたフィールドとして FullName フィールドに埋め込まれます。

login フィールドは、計算機にアクセスするときに使われるユーザ名です。

password フィールドは、ユーザの暗号化されたパスワードが収められています。

uid フィールドは、 login フィールドと関連した番号です。ファイルのアクセスを制御するために、どちらのフィールドもシステム (しばしば、複数のシステム) の中で一意である必要があります。

複数のエントリが同一のログイン名や同一のユーザ ID を持つことは可能ですが、そのようにすることは通常誤りです。これらのファイルを操作する手順では、それらの複数のエントリ内から無作為に選んだものの一つだけを返すでしょう。

gid フィールドは、ユーザがログイン時に所属するグループです。 BSD が複数のグループを採用してから ( groups(1) 参照) このフィールドは、ほとんど意味がありません。このフィールドは、番号やグループ名 ( group(5) 参照) のどちらかが記述されます。

class フィールドは、 /etc/login.conf のクラスに関する記述を参照します。典型的には、ユーザのログイン時に、ユーザのシステムリソースを制限するために使用されます。

change フィールドは、パスワードが変更されているべき日付です。

expire フィールドは、アカウントの満了する日付です。

changeexpire の両方のフィールドは、“month day year”の形式で入力し、 month は、英語の月の名前 (はじめの 3 文字でも十分です) で、 day は、その月の中の日で、 year は、その年です。

5 つのフィールドは、ユーザの 実際の名前, オフィスの場所, 職場家で使う電話 番号、そして その他の情報 を保管しています。 その他の情報 は、コンマで区切った単一文字列であり、追加の gecos フィールドを表現します (典型的には、サイト固有のユーザ情報のために使用します)。 finger(1) が、 Office: というヘッダの下にオフィスの場所と電話番号をともに表示することに注意してください。

ユーザの home directory は、ユーザがログイン時にいる場所への絶対 UNIX パス名です。

shell フィールドは、ユーザの好むコマンドインタプリタです。もし shell フィールドが空であれば、Bourne シェル /bin/sh であると仮定します。ログインシェルを変更するときに、スーパユーザではないユーザは、非標準シェルから、または非標準シェルへの変更は、許されていません。非標準シェルとは、 /etc/shells で見つけられないシェルのことです。

一度情報が確認されたら chpass は、ユーザデータベースを更新するために pwd_mkdb(8) を用います。

環境変数

環境変数 EDITOR を設定して他のエディタを指定している場合を除き、 vi(1) エディタが使われます。エディタが終了すると、その情報は、再度読み込まれ、ユーザデータベースを変更するための情報とします。ユーザの情報を変更できるのは、そのユーザかスーパユーザのみです。

PW_SCAN_BIG_IDS 環境変数の設定のインパクトについては、 pwd_mkdb(8) の説明を参照してください。

NIS との相互作用

いくつかの制限が適用されますが、 chpass ユーティリティを NIS と同時に使うこともできます。現在 chpassrpc.yppasswdd(8) を通じて NIS のパスワードマップ中で変更できるのは、通常は、ユーザのパスワード、シェル、GECOS フィールドだけです。 NIS マスタサーバ上でスーパユーザによって起動された場合を除き、 chpass (同様に passwd(1)) は、ユーザ情報の変更および新レコードの追加のために rpc.yppasswdd(8) サーバを使用出来ません。なお、 rpc.yppasswdd(8) は、どのような変更を行う前にもパスワード認証を要求します。パスワード無しで変更要求できるユーザは、 NIS マスタサーバ上のスーパユーザだけです;他の全てのユーザは、パスワードを入力する必要があります。他の全てのユーザには、NIS クライアント (および NIS スレーブサーバ) 上の root 権限を持つユーザも含まれます。 (NIS マスタサーバ上のスーパユーザがこの制約をバイパスできる理由は、主に簡便さのためです: NIS マスタサーバへの root アクセス権限をもつユーザは、既に NIS マップを更新するための権限を持っています。それにもかかわらずマップソースファイルを手で編集することは面倒です。

注: これらの例外が適用されるのは、 NIS マスタサーバが FreeBSD システムの時だけです。)

その結果として、上述の例外を除き、NIS 環境で chpass を使う場合には、以下の制限が適用されます:

  1. シェルと GECOS 情報だけを変更できます。 たとえ chpass がスーパユーザによって起動された場合であってもです。他のフィールドの変更がサポートされるようになっても、他の NIS システムとの互換性の問題を引き起こすでしょう。スーパユーザがあるエントリを編集している時に、他のフィールドにデータを書いても、余分な情報として (パスワードは、例外 -- 以下を参照してください) だまって廃棄されるでしょう。

    例外: NIS マスタサーバ上のスーパユーザは、任意のフィールドの変更が許されています。

  2. パスワード認証が要求されます。 どのような変更を行う前にも chpass ユーティリティは、ユーザの NIS パスワードを要求します。もしパスワードが間違っていたら、どのような変更も行われません。

    例外: NIS マスタサーバ上のスーパユーザは、パスワード無しに変更要求できます (スーパユーザは、後述するように -o フラグを指定する事によりこの仕様を無効にする事が選択できます)。

  3. 新しいレコードのローカルパスワードデータベースへの追加は、勧められません。NIS が動作しているときに、管理者が chpass ユーティリティによって新しいレコードをローカルのパスワードデータベースに追加可能です。しかし、新しいレコードがマスタパスワードファイルの最後、通常は、NIS の特別な '+' エントリの後に追加されるため、いくつかの混乱を招きかねません。 vipw(8) を使ってローカルのパスワードファイルを変更するべきです。

    NIS マスタサーバ上のスーパユーザによる NIS パスワードマップへの新レコードの追加が許可されるのは、 rpc.yppasswdd(8) サーバが -a フラグ付で起動された場合、すなわち追加を許可して起動された場合のみです (通常は、追加を拒否します)。 chpass ユーティリティは、デフォルトでは、ローカルのパスワードデータベースを更新しようとします; NIS マップを変更する場合には、chpass を -y フラグ付で起動してください。

  4. パスワードの変更は許可されていません。 ユーザが、自分の NIS のパスワードを変更するときには、 passwd(1)yppasswd(1) を使うべきです。スーパユーザは、新しいパスワードを指定することを許されています (たとえ、“Password:”フィールドがエディタのテンプレートにあらわれていなくても、スーパユーザは、手動で加えることができます)。しかしながら、スーパユーザであってもユーザの元のパスワードがなければ rpc.yppasswdd(8) が NIS マップの更新を拒否するでしょう。

    例外: NIS マスタサーバ上のスーパユーザは、 chpass を使用して、ユーザの NIS パスワードを変更する事が許されています。

chpass が NIS をサポートしてコンパイルされたときに、数個の特別なフラグが有効になります:

-l
ローカルと NIS の両方のデータベースにユーザが存在していても、ユーザのパスワード情報のローカルのコピーを修正することを chpass に強制します。
-y
-l と反対の効果があります。もし NIS が動作していれば、デフォルトでは、 chpass は、NIS のエントリを操作するので、このフラグは、まったく冗長です。
-d domain
NIS ドメインを指定します。 chpass ユーティリティは、デフォルトでは、システムのドメイン名を使用します。これは、 domainname(1) ユーティリティにて設定されています。 -d オプションは、このデフォルトを上書きするため、もしくはドメイン名が設定されていない場合にドメイン名を指定するために使用できます。
-h host
問い合わせるべき NIS サーバの名前もしくはアドレスを指定します。通常 chpass は、 master.passwd もしくは passwd マップにて指定される NIS マスタホストと通信します。 NIS クライアントとして構成されていないホスト上では、この情報を決定するための方法がプログラムにはありませんので、ユーザがサーバのホスト名を指定します。指定するホスト名は、NIS マスタサーバである必要が無い事に注意してください; NIS ドメイン内のマスタサーバ名でもスレーブサーバ名でも良いのです。

-d オプション使用時には、ホスト名のデフォルトは、“localhost”です。 -h オプションを -d とともに使用し、ユーザが指定するホスト名でこのデフォルトを上書きできます。

-o
rpc.yppasswdd(8) に RPC ベースの更新を強制します (“旧モード”)。 NIS マスタサーバ上でスーパユーザにより起動された場合、 chpass は、専用の非 RPC ベースの機構を使用し、 NIS パスワードマップに対する無制限の変更を許可します (この場合 UNIX ドメインソケットを使用します)。 -o フラグを使用する事により chpass に標準の更新メカニズムを使用させる事が出来ます。このオプションは、主にテスト目的のために提供されています。

関連ファイル

/etc/master.passwd
ユーザデータベース
/etc/passwd
Version 7 フォーマットのパスワードファイル
/etc/chpass.XXXXXX
パスワードファイルのテンポラリ用コピー
/etc/shells
利用できるシェルのリスト

関連項目

finger(1), login(1), passwd(1), getusershell(3), login.conf(5), passwd(5), pw(8), pwd_mkdb(8), vipw(8) Robert Morris and Ken Thompson, UNIX Password security.

歴史

chpass ユーティリティは、 4.3BSD-Reno で登場しました。

バグ

ユーザ情報の保存は、どこか他の場所にするべきです (し、いつかはそうなるでしょう)。
December 30, 1993 FreeBSD