getpwent

システムのユーザー情報を走査する

構文

解説

getpwent はシステムのパスワードファイル(ユーザーの登録情報を格納したファイルで通常は /etc/passwd)にアクセスし、ユーザー情報を返します。引数はありません。

#    0         1        2     3       4 
my ( $name,    $passwd, $uid, $gid,   $quota,
     $comment, $gcos,   $dir, $shell, $expire ) = getpwent;
#    5         6        7     8       9
No. 変数 意味 実例
0 $name ユーザー名 futomi
1 $passwd パスワード (ハッシュ値やダミー文字になっていることがほとんどです) x
2 $uid ユーザーID 1000
3 $gid グループID 1000
4 $quota クォータ情報
5 $comment コメント
6 $gcos ユーザーの実名 Futomi Hatano
7 $dir ホームディレクトリ /home/futomi
8 $shell ログインシェル /bin/bash
9 $expire 有効期限

getpwent をいきなり呼び出すと、多くの環境ではスーパーユーザー (root) の情報が返ってくるでしょう。 そのため、getpwent を単独で使うことはありません。 getpwent はイテレーターとして機能しますので、一般的には while ループで使われます。 以下のサンプルコードは、システムの登録ユーザーのユーザー名を一覧出力します。

while ( my @user_info = getpwent ) {
    print $user_info[0], "\n";
}

getpwent はスカラーコンテキストであれば、最初の項目であるユーザー名のみを返します。 そのため、前述のサンプルコードは次のように書き換えても同じです。

while ( my $name = getpwent ) {
    print $name, "\n";
}

なお、getpwent は Windows では機能しませんので注意してください。