.\" SPDX-FileCopyrightText: 1989 - 1993 Julianne Frances Haugh
.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka
.\" SPDX-License-Identifier: BSD-3-Clause
.\"
.\" $Id$
.\"
.\" Translated Fri Feb 14 23:06:00 JST 1997
.\"         by Kazuyoshi Furutaka <furutaka@Flux.tokai.jaeri.go.jp>
.\" updated Tue 17 Sep 2002 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
.\"
.TH SHADOW 3
.SH 名前
shadow \- 暗号化されたパスワードファイル用ルーチン
.SH 書式
.B #include <shadow.h>
.PP
.B struct spwd *getspent();
.PP
.B struct spwd *getspnam(char
.IB *name );
.PP
.B void setspent();
.PP
.B void endspent();
.PP
.B struct spwd *fgetspent(FILE
.IB *fp );
.PP
.B struct spwd *sgetspent(char
.IB *cp );
.PP
.B int putspent(struct spwd
.I *p,
.B FILE
.IB *fp );
.PP
.B int lckpwdf();
.PP
.B int ulckpwdf();
.SH 説明
.I shadow
は shadow パスワードファイル
\fI/etc/shadow\fR の内容を操作するルーチンである。
\fI#include\fR ファイルに与えられている構造体は以下の通り。
.sp
struct spwd {
.in +.5i
.br
	char	*sp_namp; /* user login name */
.br
	char	*sp_pwdp; /* encrypted password */
.br
	long	sp_lstchg; /* last password change */
.br
	int	sp_min; /* days until change allowed. */
.br
	int	sp_max; /* days before change required */
.br
	int	sp_warn; /* days warning for expiration */
.br
	int	sp_inact; /* days before account inactive */
.br
	int	sp_expire; /* date when account expires */
.br
	int	sp_flag; /* reserved for future use */
.br
.in \-.5i
}
.PP
各フィールドの意味は:
.sp
sp_namp \- ヌル終端されたユーザ名文字列へのポインタ
.br
sp_pwdp \- ヌル終端されたパスワード文字列へのポインタ
.br
sp_lstchg \- 1970年1月1日からパスワード最終変更日時迄の日数
.br
sp_min \- パスワード変更が出来るようになるまでの日数
.br
sp_max \- パスワードを変更しなくても良い日数
.br
sp_warn \- パスワードが期限切れになる前に、
期限切れが近づいている旨の警告をユーザに出す期間の日数
.br
sp_inact \- パスワードが期限切れになってから、
アカウントが不能となり使用できなくなるまでの日数
.br
sp_expire \- 1970年1月1からアカウントが使用不能となる日迄の日数
.br
sp_flag \- 将来使うときに向けて予約
.SH 説明
\fBgetspent\fR, \fBgetspname\fR, \fBfgetspent\fR, \fBsgetspent\fR
は、それぞれ \fBstruct spwd\fR へのポインタを返す。
\fBgetspent\fR はファイルから次のエントリを、
\fBfgetspent\fR は指定されたストリーム
(正しい書式のファイルとみなされる)
から次のエントリを返す。
\fBsgetspent\fR は入力として与えられた文字列を用いて
\fBstruct spwd\fR へのポインタを返す。
\fBgetspnam\fR はファイル中の現在の位置から
\fBname\fR にマッチするエントリを探す。
.PP
\fBsetspent\fR は
shadow パスワードファイルへのアクセスを開始するために、
\fBendspent\fR は終了するために用いられる。
.PP
\fI/etc/shadow\fR ファイルに対する排他的なアクセスを保証したい場合には、
\fBlckpwdf\fR ルーチンと \fBulckpwdf\fR ルーチンを用いる。
\fBlckpwdf\fR は \fBpw_lock\fR を用いて最大 15 秒間ロックを取得しようとする。
そして最初の 15 秒の残りの間、
\fBspw_lock\fR によって二度目のロックをしようと試み続ける。
計 15 秒間の間にいずれかの試みが失敗した場合は、
\fBlckpwdf\fR は \-1 を返す。
いずれのロックも成功した場合は 0 が返される。
.SH 返り値
これらのルーチンは、エントリが残っていない場合や、
処理の過程でエラーが発生した場合には NULL を返す。
返り値が \fBint\fR であるルーチンは、
成功したら 0 を、失敗したら \-1 を返す。
.SH 警告
shadowされたパスワードファイルへのアクセスは制限されているので、
これらのルーチンはスーパーユーザだけが利用できる。
.SH ファイル
\fI/etc/shadow\fR \- 暗号化されたユーザパスワード
.SH 関連項目
.BR getpwent (3),
.BR shadow (5)
.SH 著者
Julianne Frances Haugh (julie78787@gmail.com)