日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
GETPWENT(3) FreeBSD ライブラリ関数マニュアル GETPWENT(3) 名称 getpwent, getpwent_r, getpwnam, getpwnam_r, getpwuid, getpwuid_r, setpassent, setpwent, endpwent -- パスワードデータベースの操作 ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <sys/types.h> #include <pwd.h> struct passwd * getpwent(void); int getpwent_r(struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result); struct passwd * getpwnam(const char *login); int getpwnam_r(const char *name, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result); struct passwd * getpwuid(uid_t uid); int getpwuid_r(uid_t uid, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result); int setpassent(int stayopen); void setpwent(void); void endpwent(void); 解説 これらの関数は、passwd(5) に記述されているパスワードデータベースファイル を操作します。データベースの各エントリは、インクルードファイル <pwd.h> で 見つけられる構造体 passwd によって定義されています: struct passwd { char *pw_name; /* ユーザ名 */ char *pw_passwd; /* 暗号化されたパスワード */ uid_t pw_uid; /* ユーザ uid */ gid_t pw_gid; /* ユーザ gid */ time_t pw_change; /* パスワードの変更時刻 */ char *pw_class; /* ユーザアクセスクラス */ char *pw_gecos; /* Honeywell ログイン情報 */ char *pw_dir; /* ホームディレクトリ */ char *pw_shell; /* デフォルトのシェル */ time_t pw_expire; /* アカウント有効期限 */ int pw_fields; /* 内部: 詰めものフィールド */ }; 関数 getpwnam() と getpwuid() は、それぞれ、与えられたログイン名または ユーザ uid に対してパスワードデータベースを検索し、常に、最初に遭遇したも のを返します。 getpwent() 関数は、パスワードデータベースをシーケンシャルに読み込み、ユー ザの完全なリストを処理したいプログラムを対象としています。 関数 getpwent_r(), getpwnam_r() と getpwuid_r() は、それぞれ getpwent(), getpwnam() と getpwuid() のスレッドセーフバージョンです。呼び出し側は、 pwd, buffer, bufsize と result 引数の検索の結果のための記憶域を提供しなけ ればなりません。これらの関数が成功するとき、pwd 引数は、書き入れられ、そ の引数へのポインタは、result に格納されます。エントリが見つけられないか、 または、エラーが起こるなら、result は、NULL に設定されます。 setpassent() 関数は、2 つの目的を達成します。最初に、getpwent() は、デー タベースの先頭に ``リワインド'' します。さらに、stayopen が 0 でないな ら、ファイル記述子は、オープンされたままとされ、すべてのルーチンのための その後のアクセスを著しく速度を上げます。(この後者の機能は、デフォルトでそ のファイル記述子をクローズしないので、getpwent() のために不要です。) プログラムが実行している間に更新されるなら、データベースは、時代遅れにな るので、ファイル記述子をオープンしたままにする長く実行しているプログラム に対して危険です。 setpwent() 関数は、0 の引数を付けた setpassent() と同じです。 endpwent() 関数は、あらゆるオープンしているファイルをクローズします。 これらのルーチンは、パスワードファイルを ``見えなくする (shadow)'' ため に、書かれました、例えば、特定のプログラムにだけ、暗号化されたパスワード にアクセスすることを許可します。それらを呼び出すプロセスに 0 の実効ユーザ ID (uid) があるなら、暗号化されたパスワードが返され、そうでなければ、返さ れた構造体のパスワードフィールドは、文字列 `*' を指します。 戻り値 関数 getpwent(), getpwnam() と getpwuid() は、成功すれば、passwd 構造体へ の有効なポインタを返し、エントリが見つけられないか、またはエラーが起こる なら、NULL を返します。エラーが起こるなら、errno は、設定されます。存在し ないエントリとエラーを区別する必要があるなら、これらの関数のいずれかを呼 び出す前に、プログラムは、errno を明示的に 0 に設定しなければならないこと に注意してください。関数 getpwent_r(), getpwnam_r() と getpwuid_r() は、 エラーが起こらなかったなら、0 を返すか、または失敗を示すエラー番号を返し ます。一致するエントリが見つけられないなら、それは、エラーではありませ ん。(したがって、result が NULL であり、返り値が 0 であるなら、一致してい るエントリは、存在しません。) setpassent() 関数は、失敗すると、0 を返し、成功すると、1 を返します。 endpwent() と setpwent() 関数は、返り値がありません。 関連ファイル /etc/pwd.db 安全ではないパスワードデータベースファイル /etc/spwd.db 安全なパスワードデータベースファイル /etc/master.passwd 現在のパスワードファイル /etc/passwd Version 7 形式のパスワードファイル 互換性 代替のパスワードデータベースの指定を許可する歴史的な関数 setpwfile(3) は、非推奨となっていて、もはや利用可能ではありません。 エラー これらのルーチンは、次に加えて、open(2), dbopen(3), socket(2) と connect(2) で明記されたエラーのいずれかのために失敗します: [ERANGE] buffer と bufsize 引数によって指定されたバッファが、結 果を格納するために十分なサイズがありませんでした。呼び 出し側は、より大きなバッファで再試行するべきです。 関連項目 getlogin(2), getgrent(3), nsswitch.conf(5), passwd(5), pwd_mkdb(8), vipw(8), yp(8) 規格 getpwent(), getpwnam(), getpwnam_r(), getpwuid(), getpwuid_r(), setpwent() と endpwent() 関数は、ISO/IEC 9945-1:1996 (``POSIX.1'') に適合 しています。 歴史 getpwent(), getpwnam(), getpwuid(), setpwent() と endpwent() 関数は、 Version 7 AT&T UNIX で登場しました。setpassent() 関数は、4.3BSD-Reno で登 場しました。getpwent_r(), getpwnam_r() と getpwuid_r() 関数は、 FreeBSD 5.1 で登場しました。 バグ 関数 getpwent(), getpwnam() と getpwuid() は、それらの結果を内部の静的オ ブジェクトに残し、そのオブジェクトへのポインタを返します。同じ関数への続 く呼び出しは、同じオブジェクトを修正します。 関数 getpwent(), getpwent_r(), endpwent(), setpassent() と setpwent() は、ネットワーク化された環境でほとんど役に立たず、可能であるなら、避けら れるべきです。getpwent() と getpwent_r() 関数は、複数のソースが nsswitch.conf(5) で指定されるなら、二重の情報を削除する試みを行いません。 FreeBSD 11.2 April 16, 2003 FreeBSD 11.2