GETPWENT
Section: C Library Functions (3)
索引
jman
BSD mandoc
索引
名称
getpwent
getpwnam
getpwuid
setpassent
setpwent
endpwent
- パスワードデータベースを操作
索引
ライブラリ
Lb libc
索引
書式
In sys/types.h
In pwd.h
Ft struct passwd *
Fn getpwent void
Ft struct passwd *
Fn getpwnam const char *login
Ft struct passwd *
Fn getpwuid uid_t uid
Ft int
Fn setpassent int stayopen
Ft void
Fn setpwent void
Ft void
Fn endpwent void
索引
解説
これらの関数は、
passwd(5)
に記述されたパスワードデータベースファイルを
操作します。データベースの各エントリは、インクルードファイル
Aq Pa 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; /* ハネウエルログイン情報 */
char *pw_dir; /* ホームディレクトリ */
char *pw_shell; /* デフォルトのシェル */
time_t pw_expire; /* アカウント有効期限 */
int pw_fields; /* 内部フィールド: 充てんフィールド */
};
関数
Fn getpwnam
は与えられたログイン名を、
Fn getpwuid
は与えられたユーザ ID を
それぞれパスワードデータベースで検索し、常に最初に遭遇した
エントリを返します。
Fn getpwent
関数はパスワードデータベースを順次読み込みます。ユーザの完全な
リストを処理したいプログラム向きです。
Fn setpassent
関数は
2 つの目的を果たすものです。まず
Fn getpwent
関数がデータベースの最初へ「巻き戻す (rewind)」
ようにします。さらに
Fa stayopen
が 0
でなければ、ファイル記述子をオープンしたままにします。
これにより、これらのルーチンに対するその後のアクセスすべてが
極めて高速化されます
(ただし
Fn getpwent
の場合、デフォルトでファイル記述子をクローズしないので
後者の機能は不要です)。
長時間実行されているプログラムでファイル記述子をオープンした
ままにしておくのは危険です。なぜなら、プログラムが実行されて
いる間にデータベースが更新されると、オープンしたままにしている
データベースは古い物になってしまうからです。
Fn setpwent
関数は、引数を 0 にした
Fn setpassent
と同じです。
Fn endpwent
関数は、オープンしているファイルをすべてクローズします。
これらのルーチンは、パスワードファイルを
「隠す (shadow)」目的で
書かれました。たとえば、暗号化パスワードにアクセスできる
プログラムを限定できるようにです。これらのルーチンを
呼び出すプロセスの有効ユーザ ID が 0 ならば暗号化パスワードを返し、
その他の場合は戻り値である構造体のパスワードフィールドは
ストリング
`*'
を指すようになります。
索引
YP/NIS の相互作用
yp(4)
パスワード
データベースが使用可能な場合、ローカルのデータベースに
要求されたパスワードエントリが見つからないと、
Fn getpwnam
および
Fn getpwuid
関数はそれぞれ、
``passwd.byname
''
および
``passwd.byuid
''
YP マップを使用します。
passwd(5)
で記述されているようにマップ全体が使用可能である場合は、
Fn getpwent
関数は
YP マップ
``passwd.byname
''
を一通り読みます。
索引
戻り値
関数
Fn getpwent ,
Fn getpwnam
および
Fn getpwuid
は、いずれも成功すると、
passwd 構造体への有効なポインタを返します。
ファイルの終端に到達するか、もしくはエラーが発生した場合は
ヌルポインタを返します。
Fn setpassent
関数は、失敗した場合は 0 を、成功した場合は
1 を返します。
Fn endpwent
および
Fn setpwent
関数の戻り値はありません。
索引
関連ファイル
- /etc/pwd.db
-
安全ではないパスワードデータベースファイル
- /etc/spwd.db
-
安全なパスワードデータベースファイル
- /etc/master.passwd
-
現在のパスワードファイル
- /etc/passwd
-
Version 7
形式のパスワードファイル
索引
関連項目
getlogin(2),
getgrent(3),
yp(4),
passwd(5),
pwd_mkdb8,
vipw(8)
索引
歴史
Fn getpwent ,
Fn getpwnam ,
Fn getpwuid ,
Fn setpwent
および
Fn endpwent
関数は、
AT&T System
v7
ではじめて登場しました。
Fn setpassent
関数は
BSD 4.3 Reno
で登場しました。
索引
互換性
歴史的な理由で存在していた、
代替パスワードデータベースの規格を許した関数
setpwfile(3)
は非推奨になっており、もう使用できません。
索引
バグ
関数
Fn getpwent ,
Fn getpwnam
および
Fn getpwuid
は、呼び出し結果を内部の静的オブジェクトに残し、
そのオブジェクトを指すポインタを返します。その後、
同じ関数を呼び出すと、同じオブジェクトを変更していきます。
索引
Index
- 名称
-
- ライブラリ
-
- 書式
-
- 解説
-
- YP/NIS の相互作用
-
- 戻り値
-
- 関連ファイル
-
- 関連項目
-
- 歴史
-
- 互換性
-
- バグ
-
Time: 07:07:07 GMT, January 12, 2009