システムのユーザー情報を走査する
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 では機能しませんので注意してください。