kazmax - Linux で自宅サーバー

Linux ユーザー一覧の確認と/etc/passwd ファイル

このLinux OSには、どんなユーザがいるのか。 ユーザーの一覧を見たい場合があります。
これは、/etc/passwdファイルを確認する事で解決します。

Last Update : 2008年08月16日

Linux ユーザー一覧の確認と/etc/passwd ファイル 項目

  1. /etc/passwd ファイルと見方
  2. /etc/passwd と /etc/shadow
  3. /etc/passwd から、ユーザー一覧を出力する

1. /etc/passwd ファイルと見方

ユーザー情報は、/etc/passwdファイルで確認する事ができます。 ユーザー名、パスワード、ユーザーID、グループID、コメント(本名とか電話番号とか)ホームディレクトリ、ログインシェルが記録されています。

/etc/passwd の中身はこんな感じです。

[hogehoge@localhost ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
・・・
hogehoge:x:500:501:KAZMAX_ADMIN:/home/hogehoge:/bin/bash
hogehoge ユーザー名
x 「 x 」という文字か、暗号化されたパスワード。「 x 」はシャドウパスワードを使用している事を意味します。
500 ユーザーID
501 グループID
KAZMAX_ADMIN コメント(本名とか電話番号とか)。コメント無しの場合は何も記入されない。
/home/hogehoge そのユーザーのホームディレクトリ。
/bin/bash そのユーザーのログインシェル名。

memo

パスワードの部分が空白である場合、パスワード無しでログインできる可能性があります。すぐ設定してあげましょう。 逆に言えば、/etc/passwd ファイルから、あるユーザーの「 x 」を削除すると、パスワード未設定の状態になり、 パスワード無しでログインできる状態にする事ができます( パスワード無しでログインできる環境なら )。

2. /etc/passwd と /etc/shadow

最近のディストリビューションでは、パスワードの場所に大概「 x 」と記入されています。
以前では、/etc/passwdファイルに暗号化されたパスワードが書かれていました。

/etc/passwd ファイルは一般ユーザーでも参照でき、がんばると暗号化されたパスワードを解析する事ができるようです。 また、/etc/passwd ファイルを一般ユーザーが読めないようにすると、ログインできなくなります。

この為、シャドウパスワードというものが利用されるようになり、/etc/passwd ファイルには「 x 」とだけ書かれるようになりました。 代わりに、/etc/shadow ファイルに暗号化されたパスワードが書かれています。

ちなみに、root のリードオンリーです。

[root@localhost ~]# ls -l /etc/shadow
-r--------  1 root root 1559  4月 14 00:25 /etc/shadow

3. /etc/passwd から、ユーザー一覧を出力する

/etc/passwd ファイルからユーザー一覧を出力します。

[hogehoge@localhost ~]$ cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
・・・

memo

alias で登録しておくと結構便利です。
listusersというコマンドがUNIXにあるので同じ名前で。
ログインした時から使えるように、ホームディレクトリにある「.bashrc」に追記。

[hogehoge@localhost ~]$ cd
[hogehoge@localhost ~]$ vi .bashrc
alias listusers="cut -d: -f1 /etc/passwd"  ← 追記
・・・

[hogehoge@localhost ~]$ source .bashrc
[hogehoge@localhost ~]$ listusers
root
bin
daemon
adm
lp
・・・

memo

2008年08月16日 - 追記

glibc-commonというパッケージに、「getent」というコマンドがあり、「passwd」というオプションをつけて実行すると、 ldapアカウント含むユーザーの一覧を出力する事ができます。

[hogehoge@localhost ~]$ getent passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
・・・
Linux 基礎知識 関連記事