EN JA
PW_UTIL(3)
PW_UTIL(3) FreeBSD Library Functions Manual PW_UTIL(3)

名称

pw_copy, pw_dup, pw_edit, pw_equal, pw_fini, pw_init, pw_make, pw_make_v7, pw_mkdb, pw_lock, pw_scan, pw_tempname, pw_tmppasswd ファイルの操作のための関数

ライブラリ

System Utilities Library (libutil, -lutil)

書式

#include < pwd.h>
#include < libutil.h>

int
pw_copy( int ffd, int tfd, const struct passwd *pw, const struct passwd *oldpw);

struct passwd *
pw_dup( const struct passwd *pw);

int
pw_edit( int nosetuid);

int
pw_equal( const struct passwd *pw1, const struct passwd pw2);

void
pw_fini( void);

int
pw_init( const char *dir, const, char, *master");

char *
pw_make( const struct passwd *pw);

char *
pw_make_v7( const struct passwd *pw);

int
pw_mkdb( const char *user);

int
pw_lock( void);

struct passwd *
pw_scan( const char *line, int flags);

const char *
pw_tempname( void);

int
pw_tmp( int mfd);

解説

pw_copy() 関数は、 ffd からパスワードファイルを読み込み、おそらく修正を加えて tfd に、それを元のように書き込みます:
  • pwNULL で、 oldpwNULL でないなら、 oldpw によって表わされるレコードは、(ユーザ削除に対応して) コピーされません。
  • pwoldpwNULL でないなら、 pw に対応するレコードは、 oldpw に対応するレコードによって置き換えられます。
  • pw が設定され、 oldpwNULL であるなら、 pw に対応するレコードは、(ユーザ追加に対応して) 追加されます。

pw_copy() 関数は、失敗の場合には、-1 を返し、そうでなければ、0 を返します。

pw_dup() 関数は、 pw によって指された struct passwd を複写し、コピー先のポインタを返し、または失敗の場合には、 NULL を返します。新しい struct passwd は、 malloc(3) で割り付けられ、 free(3) で、それを解放するのは、呼び出し側の責任です。

pw_edit() 関数は、 pw_tmp() によって作成されたマスタパスワードファイルの一時的なコピーで EDITOR 環境変数 (または EDITOR が定義されていないなら、 /usr/bin/vi) によって指定されたコマンドを呼び出します。ファイルが修正されたなら、 pw_edit() は、それをインストールし、パスワードデータベースを再作成します。 pw_edit() 関数は、失敗の場合には、-1 を返し、ファイルが修正されなかったなら、 0 を返し、そしてファイルが修正されインストールが成功したなら、 0 でない正の数を返します。

pw_equal() 関数は、2 つの struct passwd を比較し、それらが等しいなら、0 を返します。

pw_fini() 関数は、もしあるなら、 pw_tmp() によって作成された一時ファイルを破壊し、もしあるなら、 pw_edit() によって実行された EDITOR のあらゆる実行しているインスタンスを kill し、もしあるなら、 pw_lock() によって作成されたロックをクローズします。

pw_init() は、パスワードファイルのパスを表わす静的変数を初期化します。 dir は、パスワードファイルが位置しているディレクトリです。 NULL に設定されるなら、それは、デフォルトで /etc になります。 master は、パスワードファイルの名前です。 NULL に設定されるなら、デフォルトで master.passwd になります。

pw_make() 関数は、 struct passwd から適切に書式化された BSD passwd(5) 行を作成し、結果の文字列へのポインタを返します。文字列は、 malloc(3) で割り付けられ、 free(3) で、それを解放するのは、呼び出し側の責任です。

pw_make_v7() 関数は、 struct passwd から適切に書式化された UNIX V7 passwd(5) 行を作成し、結果の文字列へのポインタを返します。文字列は、 malloc(3) で割り付けられ、 free(3) で、それを解放するのは、呼び出し側の責任です。

pw_mkdb() 関数は、 pw_mkdb(8) を実行することによってパスワードデータベースを再作成します。 user であるなら、そのユーザに対応するレコードだけが更新されます。 pw_mkdb() 関数は、成功の場合に、0 を返し、失敗の場合に、-1 を返します。

pw_lock() 関数は、マスタパスワードファイルをロックします。それは、成功の場合に、0 を返し、失敗の場合に、-1 を返します。

pw_scan() 関数は、内部 libc 関数 __pw_scan() まわりのラッパ (wrapper) です。提供された line (行) に対応する行のためにマスタパスワードファイルをスキャンし、既存のレコードに一致するなら、 struct passwd を返します。失敗の場合には、 NULL を返します。そうでなければ、一致するレコードを含んでいる struct passwd へのポインタを返します。 struct passwd は、 malloc(3) で割り付けられ、 free(3) で、それを解放するのは、呼び出し側の責任です。

pw_tempname() 関数は、 pw_tmp() によって作成されたマスタファイルの一時的な名前を返します。

pw_tmp() は、おそらく安全な一時的なパスワードファイルを作成し、オープンします。 mfd がオープンされたパスワードファイルのファイル記述子であるなら、一時的なパスワードファイルを読み込み、元のように書き込みます。そうでなければ、-1 に設定されるべきです。 pw_tmp() は、一時的なパスワードファイルのオープンされたファイル記述子を返し、失敗の場合には、-1 を返します。

作者

このソフトウェアの一部は、 DARPA CHATS 研究プログラムの一環として DARPA/SPAWAR 規約 N66001-01-C-8035 (“CBOSS”) の下で ThinkSec AS と Network Associates Laboratories, the Security Research Division of Network Associates, Inc. によって FreeBSD プロジェクトのために開発されました。

このマニュアルページは、 Baptiste Daroussin <bapt@FreeBSD.org>によって書かれました。

October 30, 2012 FreeBSD