名 前
shadow − 暗 号 化 さ れ た パ ス ワ ー ド フ ァ イ ル 用 ル ー チ ン
書 式
#include <shadow.h>
struct spwd *getspent();
struct spwd *getspnam(char *name);
void setspent();
void endspent();
struct spwd *fgetspent(FILE *fp);
struct spwd *sgetspent(char *cp);
int putspent(struct spwd *p, FILE *fp);
int lckpwdf();
int ulckpwdf();
説 明
shadow は shadow パ ス ワ ー ド フ ァ イ ル /etc/shadow の 内 容 を 操 作 す る ル ー チ ン で あ る 。 #include フ ァ イ ル に 与 え ら れ て い る 構 造 体 は 以 下 の 通 り 。
struct spwd {
char | |||
*sp_namp; /* user login name */ | |||
char | |||
*sp_pwdp; /* encrypted password */ | |||
long | |||
sp_lstchg; /* last password change */ | |||
int | |||
sp_min; /* days until change allowed. */ | |||
int | |||
sp_max; /* days before change required */ | |||
int | |||
sp_warn; /* days warning for expiration */ | |||
int | |||
sp_inact; /* days before account inactive */ | |||
int | |||
sp_expire; /* date when account expires */ | |||
int | |||
sp_flag; /* reserved for future use */ } 各 フ ィ ー ル ド の 意 味 は : |
sp_namp −
ヌ ル 終 端 さ れ
た ユ ー ザ 名 文
字 列 へ の ポ イ
ン タ
sp_pwdp − ヌ ル 終 端 さ
れ た パ ス ワ ー
ド 文 字 列 へ の
ポ イ ン タ
sp_lstchg − 1970年 1月 1日 か
ら パ ス ワ ー ド
最 終 変 更 日 時
迄 の 日 数
sp_min − パ ス ワ ー ド
変 更 が 出 来 る
よ う に な る ま
で の 日 数
sp_max − パ ス ワ ー ド
を 変 更 し な く
て も 良 い 日 数
sp_warn − パ ス ワ ー ド
が 期 限 切 れ に
な る 前 に 、 期
限 切 れ が 近 づ
い て い る 旨 の
警 告 を ユ ー ザ
に 出 す 期 間 の
日 数
sp_inact − パ ス ワ ー
ド が 期 限 切 れ
に な っ て か ら
、 ア カ ウ ン ト
が 不 能 と な り
使 用 で き な く
な る ま で の 日
数
sp_expire − 1970年 1月 1か ら
ア カ ウ ン ト が
使 用 不 能 と な
る 日 迄 の 日 数
sp_flag − 将 来 使 う と
き に 向 け て 予
約
説 明
getspent, getspname, fgetspent, sgetspent は 、 そ れ ぞ れ struct spwd へ の ポ イ ン タ を 返 す 。 getspent は フ ァ イ ル か ら 次 の エ ン ト リ を 、 fgetspent は 指 定 さ れ た ス ト リ ー ム (正 し い 書 式 の フ ァ イ ル と み な さ れ る ) か ら 次 の エ ン ト リ を 返 す 。 sgetspent は 入 力 と し て 与 え ら れ た 文 字 列 を 用 い て struct spwd へ の ポ イ ン タ を 返 す 。 getspnam は フ ァ イ ル 中 の 現 在 の 位 置 か ら name に マ ッ チ す る エ ン ト リ を 探 す 。
setspent は shadow パ ス ワ ー ド フ ァ イ ル へ の ア ク セ ス を 開 始 す る た め に 、 endspent は 終 了 す る た め に 用 い ら れ る 。
/etc/shadow フ ァ イ ル に 対 す る 排 他 的 な ア ク セ ス を 保 証 し た い 場 合 に は 、 lckpwdf ル ー チ ン と ulckpwdf ル ー チ ン を 用 い る 。 lckpwdf は pw_lock を 用 い て 最 大 15 秒 間 ロ ッ ク を 取 得 し よ う と す る 。 そ し て 最 初 の 15 秒 の 残 り の 間 、 spw_lock に よ っ て 二 度 目 の ロ ッ ク を し よ う と 試 み 続 け る 。 計 15 秒 間 の 間 に い ず れ か の 試 み が 失 敗 し た 場 合 は 、 lckpwdf は -1 を 返 す 。 い ず れ の ロ ッ ク も 成 功 し た 場 合 は 0 が 返 さ れ る 。
返 り 値
こ れ ら の ル ー チ ン は 、 エ ン ト リ が 残 っ て い な い 場 合 や 、 処 理 の 過 程 で エ ラ ー が 発 生 し た 場 合 に は NULL を 返 す 。 返 り 値 が int で あ る ル ー チ ン は 、 成 功 し た ら 0 を 、 失 敗 し た ら -1 を 返 す 。
警 告
shadowさ れ た パ ス ワ ー ド フ ァ イ ル へ の ア ク セ ス は 制 限 さ れ て い る の で 、 こ れ ら の ル ー チ ン は ス ー パ ー ユ ー ザ だ け が 利 用 で き る 。
フ ァ イ ル
/etc/shadow − 暗 号 化 さ れ た ユ ー ザ パ ス ワ ー ド
関 連 項 目
著 者
Julianne Frances Haugh (jockgrrl [AT] ix.com)