総合手引 | セクション 3 | English | オプション |
#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 | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | I have a natural revulsion to any operating system that shows so little planning as to have to named all of its commands after digestive noises (awk, grep, fsck, nroff). | ” |