総合手引 | セクション 3 | English | Deutsch | オプション |
#include <sys/types.h>
#include <pwd.h>
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; /* ハネウエルログイン情報 */ char *pw_dir; /* ホームディレクトリ */ char *pw_shell; /* デフォルトのシェル */ time_t pw_expire; /* アカウント有効期限 */ int pw_fields; /* 内部フィールド: 充てんフィールド */ };
関数 getpwnam() は与えられたログイン名を、 getpwuid() は与えられたユーザ ID を それぞれパスワードデータベースで検索し、常に最初に遭遇した エントリを返します。
getpwent() 関数はパスワードデータベースを順次読み込みます。ユーザの完全な リストを処理したいプログラム向きです。
setpassent() 関数は 2 つの目的を果たすものです。まず getpwent() 関数がデータベースの最初へ「巻き戻す (rewind)」 ようにします。さらに stayopen が 0 でなければ、ファイル記述子をオープンしたままにします。 これにより、これらのルーチンに対するその後のアクセスすべてが 極めて高速化されます (ただし getpwent() の場合、デフォルトでファイル記述子をクローズしないので 後者の機能は不要です)。
長時間実行されているプログラムでファイル記述子をオープンした ままにしておくのは危険です。なぜなら、プログラムが実行されて いる間にデータベースが更新されると、オープンしたままにしている データベースは古い物になってしまうからです。
setpwent() 関数は、引数を 0 にした setpassent() と同じです。
endpwent() 関数は、オープンしているファイルをすべてクローズします。
これらのルーチンは、パスワードファイルを 「隠す (shadow)」目的で 書かれました。たとえば、暗号化パスワードにアクセスできる プログラムを限定できるようにです。これらのルーチンを 呼び出すプロセスの有効ユーザ ID が 0 ならば暗号化パスワードを返し、 その他の場合は戻り値である構造体のパスワードフィールドは ストリング ‘*’ を指すようになります。
/etc/pwd.db | 安全ではないパスワードデータベースファイル |
/etc/spwd.db | 安全なパスワードデータベースファイル |
/etc/master.passwd | |
現在のパスワードファイル | |
/etc/passwd | Version 7 形式のパスワードファイル |
GETPWENT (3) | September 20, 1994 |
総合手引 | セクション 3 | English | Deutsch | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Do you laugh when the waiter drops a tray full of dishes? Unix weenies do. They're the first ones to laugh at hapless users, trying to figure out an error message that doesn't have anything to do with what they just typed. | ” |
— The Unix Haters' handbook |