| この記事の要点 |
|
登録ユーザー一覧の取得
Linux サーバーに登録されているユーザーは /etc/passwd ファイルか getent passwd コマンドで一覧できます。両者の違いは重要:
# /etc/passwd の中身そのもの(ローカル定義のみ)
cat /etc/passwd
# getent passwd は NSS 経由 → LDAP / NIS / SSSD のユーザーも含む
getent passwd
# 1 ユーザー指定
getent passwd alice
# alice:x:1001:1001:Alice User:/home/alice:/bin/bash
# 件数
wc -l /etc/passwd
getent passwd | wc -l
/etc/passwd の読み方
alice:x:1001:1001:Alice User:/home/alice:/bin/bash
| | | | | | |
| | | | | | +-- ログインシェル
| | | | | +-------------- ホームディレクトリ
| | | | +------------------------- GECOS(フルネーム等)
| | | +------------------------------- プライマリ GID
| | +------------------------------------ UID
| +--------------------------------------- パスワード(x=/etc/shadow参照)
+-------------------------------------------- ユーザー名
ログイン可能なユーザーだけ抽出
サービス用アカウント (httpd, mysql 等) は通常 /sbin/nologin や /bin/false が割当てられます。ログイン可能な人間ユーザーだけを抽出する場合:
# ログイン可能シェルを持つユーザー
awk -F: '$7 !~ /nologin|false|sync|halt|shutdown/ {print $1, $7}' /etc/passwd
# ホームディレクトリが /home 以下のユーザーのみ
awk -F: '$6 ~ /^\/home\// {print $1}' /etc/passwd
# UID >= 1000(一般ユーザー、CentOS 7+ / Ubuntu / Debian)
awk -F: '$3 >= 1000 && $3 < 65534 {print $1}' /etc/passwd
# UID 500-999(古い RHEL 6 以前)
awk -F: '$3 >= 500 && $3 < 1000 {print $1}' /etc/passwd
# 名前のみリスト
cut -d: -f1 /etc/passwd
getent passwd | cut -d: -f1
現在ログイン中のユーザー
# 簡潔
users
# alice bob
# 詳細
who
# alice pts/0 2026-06-11 10:00 (192.168.1.10)
# bob pts/1 2026-06-11 10:30 (192.168.1.20)
# CPU / IDLE / 実行中コマンドも
w
# 10:50:00 up 5 days, 3:00, 2 users, load average: 0.05, 0.10, 0.15
# USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
# alice pts/0 192.168.1.10 10:00 0.00s 0.10s 0.00s w
# bob pts/1 192.168.1.20 10:30 0.50m 0.05s 0.05s vim
# ログイン履歴(過去)
last
last -10 # 直近 10 件
last alice # alice のログイン履歴
last reboot # 再起動履歴
# 失敗ログイン
lastb # root 権限必要
UID で人間ユーザーを抽出(システム別)
| システム | システムアカウント UID | 一般ユーザー UID |
|---|---|---|
| RHEL 7+, CentOS 7+, Rocky/AlmaLinux | 0〜999 | 1000〜65533 |
| RHEL 6 以前 | 0〜499 | 500〜65533 |
| Ubuntu / Debian | 0〜999 | 1000〜65533 |
| SUSE / openSUSE | 0〜999(一部 100〜499 をサービス予約) | 1000〜65533 |
| 古い Solaris | 0〜99 | 100〜2147483647 |
境界は /etc/login.defs の UID_MIN / UID_MAX で定義されています:
grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
# UID_MIN 1000
# UID_MAX 60000
# SYS_UID_MIN 201
# SYS_UID_MAX 999
# これを使って一般ユーザー抽出
UID_MIN=$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)
UID_MAX=$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)
awk -F: -v min=$UID_MIN -v max=$UID_MAX \
'$3 >= min && $3 <= max {print $1}' /etc/passwd
グループ確認
# 全グループ
cat /etc/group
getent group
# 特定ユーザーが属するグループ
groups alice
id alice
# uid=1001(alice) gid=1001(alice) groups=1001(alice),10(wheel),100(users)
# 特定グループに属するメンバー
getent group wheel
# wheel:x:10:alice,bob,carol
# wheel グループメンバー(sudo 権限ユーザー)一覧
getent group wheel | cut -d: -f4
sudo 可能なユーザーを調べる
# sudoers ファイル(root のみ閲覧可)
sudo cat /etc/sudoers
sudo ls /etc/sudoers.d/
# wheel グループメンバー(RHEL系で sudo 権限を持つことが多い)
getent group wheel | cut -d: -f4
# sudo グループメンバー(Debian / Ubuntu)
getent group sudo | cut -d: -f4
# 全ユーザーの sudo 可否確認
for u in $(getent passwd | cut -d: -f1); do
sudo -lU $u 2>/dev/null | grep -q '(ALL' && echo "$u has sudo"
done
パスワード設定状況
# /etc/shadow(root 専用)でパスワード状況確認
sudo awk -F: '{print $1, $2}' /etc/shadow
# alice $6$xxxxxx... ← ハッシュあり = ログイン可
# guest ! ← ロック中
# nobody * ← パスワード無し(ログイン不可)
# 各ユーザーのパスワード状態
sudo passwd -S alice
# alice PS 2026-05-01 0 99999 7 -1 (Password set, SHA512 crypt.)
# L = locked
# NP = no password
# PS = password set
# ロックされているユーザー一覧
sudo awk -F: '$2 ~ /^!/ {print $1}' /etc/shadow
よく使う組合せ
# 「実在する人間ユーザー」のみ抽出(推奨パターン)
getent passwd | \
awk -F: '$3 >= 1000 && $3 < 65534 && $7 !~ /nologin|false/ {print $1}'
# 各ユーザーの最終ログイン
lastlog
# Username Port From Latest
# alice pts/0 192.168.1.10 Wed Jun 11 10:00:00 +0900 2026
# bob **Never logged in**
# 90 日以上ログインしていないユーザー
lastlog -b 90
FAQ
Q: AD / LDAP のユーザーは /etc/passwd に出ない
A: SSSD や nss_ldap 経由のユーザーは /etc/passwd には載りません。getent passwd を使うこと。これは NSS(Name Service Switch)経由なので統合された結果を返します。
Q: ホームディレクトリが無いユーザーは
A: useradd -M で作成すれば作られません。サービス用アカウントは大抵そう。ls /home と /etc/passwd の $6 列を比較すると整合性確認できます。
Q: 一時的にユーザーをロックしたい
A: sudo usermod -L alice でロック(shadow の パスワードハッシュ先頭に ! が付く)。usermod -U で解除。SSH 鍵ログインは別途無効化が必要(鍵ベースは shadow 確認しない)。
子ページ
子ページはありません
同階層のページ
- ディストリビューション
- コマンド一覧
- Linuxのサーバーに登録されているユーザの一覧を確認するコマンド
- リポジトリの一覧の確認
- エラー一覧
- ショートカットキー一覧
- ログを確認する便利なコマンド
- cronの導入と実行方法 (CentOS 7編)
- ディレクトリ内のファイル数を確認
- 複数ファイル内の文字列を一括置換する方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- MariaDB Monitor (mysql コマンド) の使い方 2026-10-14 15:21:02
- MariaDB の管理ツール (phpMyAdmin / DBeaver 等) 2026-10-14 15:21:02
- Google Custom Search JSON API|新規受付終了・移行期限と既存実装の確認 2026-10-14 14:50:13
- MySQL rootの初期パスワード確認|導入方式・Docker既存DB・復旧の注意 2026-10-14 14:39:34
- MySQL root パスワードの変更方法(ALTER USER / mysqladmin / パスワード忘れ時の復旧) 2026-10-14 14:39:34
- MySQL ALTER USER の使い方|パスワード変更・アカウントロック 2026-10-14 14:39:34
- MySQL ERROR 1129|ホスト遮断の原因・カウンタ・解除前の確認 2026-10-14 14:04:49
- MySQL ERROR 1820・1862|期限切れパスワードの安全な更新と確認 2026-10-14 14:04:49
- MySQL ERROR 1698|ソケット認証・OSユーザー・接続経路の確認 2026-10-14 14:04:49
- mysql_configが見つからない|mysqlclientの旧ビルドとpkg-configの確認 2026-10-14 13:36:32
- MySQLエラー一覧|番号・SQLSTATE別の原因と安全な確認手順 2026-10-14 13:36:32
- インストール直後にNetbeansが反応しない 2026-10-14 13:07:02
- NetBeans でよくあるエラー一覧と対処法 — JDK / Tomcat / PHP / メモリ不足 2026-10-14 13:07:02
- Apache NetBeans入門|起動JDK・プロジェクト作成・関連手順 2026-10-14 13:07:02
- 【Laravel】ページング(ページネーション)をする方法 2026-10-14 12:31:44