8.

Linux でユーザーとパスワード一覧を確認する方法

編集
この記事の要点
  • ユーザー一覧は /etc/passwd、パスワードハッシュは /etc/shadow(root のみ閲覧可)
  • cat /etc/passwd | cut -d: -f1 でユーザー名だけを抽出
  • getent passwd で LDAP / NIS 統合ユーザーも含めた一覧
  • id user / groups user で UID / GID / 所属グループ確認
  • 最終ログイン lastlog、ログイン履歴 last、現在ログイン中 who / w

Linux ユーザー情報の格納場所

ファイル内容権限
/etc/passwdユーザー名 / UID / GID / ホーム / シェル644(全員 readable)
/etc/shadowパスワードハッシュ / 有効期限000 or 600(root のみ)
/etc/groupグループ定義644
/etc/gshadowグループパスワード000
/etc/sudoerssudo 権限定義440

1. /etc/passwd を読む

# 全ユーザー一覧
cat /etc/passwd

# ユーザー名だけ
cut -d: -f1 /etc/passwd

# UID >= 1000 の一般ユーザーのみ
awk -F: '$3 >= 1000 {print $1}' /etc/passwd

# 出力フォーマット
# username:x:UID:GID:GECOS:home:shell
# taro:x:1001:1001:Taro Yamada:/home/taro:/bin/bash
# - x は「shadow 参照」のマーカー(実体は /etc/shadow)

2. /etc/shadow を読む(root のみ)

sudo cat /etc/shadow

# フォーマット
# username:hash:lastchg:min:max:warn:inactive:expire:reserved
# taro:$6$abc...$xyz:19500:0:99999:7:::

# 各フィールドの意味
# hash       $6$ = SHA-512 / $5$ = SHA-256 / $1$ = MD5(古い)
# lastchg    1970/1/1 からの日数(最終パスワード変更日)
# min        パスワード変更可能になるまでの日数
# max        パスワード有効期限(日)
# warn       期限切れ警告開始日数

# パスワード有効期限を確認
sudo chage -l taro

3. getent: 名前解決を統一

LDAP / NIS / SSSD 等で統合認証している環境では /etc/passwd に居ないユーザーもいます。getentnsswitch.conf の順で検索します:

# 全ユーザー(LDAP 等含む)
getent passwd

# 特定ユーザー
getent passwd taro

# 全グループ
getent group

# nsswitch.conf 確認(参照順)
cat /etc/nsswitch.conf | grep passwd
# passwd: files sssd ldap

4. 個別ユーザーの詳細

# UID / GID / 所属グループ
id taro
# uid=1001(taro) gid=1001(taro) groups=1001(taro),10(wheel),100(users)

# 所属グループだけ
groups taro

# ホームディレクトリ
getent passwd taro | cut -d: -f6

# ログインシェル
getent passwd taro | cut -d: -f7

# finger(要インストール)
finger taro

5. ログイン履歴

# 全ユーザーの最終ログイン
lastlog

# 特定ユーザーの最終ログイン
lastlog -u taro

# ログイン履歴(直近 / wtmp ベース)
last
last taro
last -10        # 直近 10 件
last -F         # 完全な日時表示

# 失敗したログイン(btmp ベース、要 root)
sudo lastb

# 現在ログイン中
who
w               # アイドル時間 / 実行中コマンドも

# ログイン中ユーザーをユニーク
users

6. パスワード関連の管理コマンド

# パスワード変更
passwd                # 自分
sudo passwd taro      # 他人(root)

# パスワードロック / アンロック
sudo passwd -l taro   # ロック(ハッシュ先頭に ! を付与)
sudo passwd -u taro   # アンロック
sudo passwd -S taro   # 状態確認

# 有効期限設定
sudo chage -l taro                    # 現状表示
sudo chage -E 2026-12-31 taro         # アカウント失効日
sudo chage -M 90 -W 14 taro           # 90日有効、14日前警告
sudo chage -d 0 taro                  # 次回ログインでパスワード変更強制

7. ユーザー追加 / 削除

# 追加(RHEL / Ubuntu 共通)
sudo useradd -m -s /bin/bash -G wheel taro
sudo passwd taro

# 対話形式(Debian/Ubuntu のラッパー)
sudo adduser taro

# 削除(ホームも消す)
sudo userdel -r taro

# 変更
sudo usermod -aG docker taro          # docker グループ追加
sudo usermod -s /bin/zsh taro         # シェル変更
sudo usermod -L taro                  # ロック

調査ワンライナー

目的コマンド
一般ユーザーのみawk -F: '$3 >= 1000 {print $1}' /etc/passwd
システムユーザーawk -F: '$3 < 1000 {print $1}' /etc/passwd
ログインシェルが bashgrep '/bin/bash$' /etc/passwd
ログイン無効grep '/sbin/nologin\|/bin/false' /etc/passwd
パスワード未設定sudo awk -F: '($2=="" || $2=="!"){print $1}' /etc/shadow
wheel グループ所属getent group wheel

FAQ

Q: 生のパスワード文字列を見ることはできる?
A: できません。/etc/shadow はハッシュのみ。確認したい場合は新しいパスワードを設定してください。

Q: 最近作られたユーザーを知りたい
A: sudo grep useradd /var/log/secure(RHEL)or /var/log/auth.log(Ubuntu)で監査ログを確認。

Q: SSH 公開鍵ログインのみ許可されているユーザー
A: ~/.ssh/authorized_keys の存在で判別。for u in $(cut -d: -f1 /etc/passwd); do test -f /home/$u/.ssh/authorized_keys && echo $u; done

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. MySQLの起動(Windows)
  2. MySQLの起動、停止、再起動(Linux)
  3. MYSQL への接続
  4. データベース一覧の表示
  5. データベースへの接続
  6. テーブル一覧を表示
  7. テーブル定義を確認
  8. ユーザーおよびパスワード一覧の確認