タイトル: ユーザーおよびパスワード一覧の確認
SEOタイトル: Linux でユーザーとパスワード一覧を確認する方法
| この記事の要点 |
|
Linux ユーザー情報の格納場所
| ファイル | 内容 | 権限 |
|---|---|---|
/etc/passwd | ユーザー名 / UID / GID / ホーム / シェル | 644(全員 readable) |
/etc/shadow | パスワードハッシュ / 有効期限 | 000 or 600(root のみ) |
/etc/group | グループ定義 | 644 |
/etc/gshadow | グループパスワード | 000 |
/etc/sudoers | sudo 権限定義 | 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 に居ないユーザーもいます。getent は nsswitch.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 |
| ログインシェルが bash | grep '/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