Linuxシステムのすべてのユーザーを一覧表示したり、システムのユーザー数をカウントしたりしたことがありますか?ユーザーの作成、ユーザーの削除、ログインしているユーザーの一覧表示を行うコマンドがありますが、Linuxのすべてのユーザーを一覧表示するコマンドは何ですか?
このチュートリアルでは、Linuxシステムでユーザーを一覧表示する方法を説明します。
/etc/passwd
を使用してすべてのユーザーのリストを取得します ファイル番号
ローカルユーザー情報は/etc/passwd
に保存されます ファイル。このファイルの各行は、1人のユーザーのログイン情報を表します。ファイルを開くには、cat
を使用できます。 またはless
:
less /etc/passwd
ファイルの各行には、次の情報を含むコロンで区切られた7つのフィールドがあります。
- ユーザー名。
- 暗号化されたパスワード(
x
パスワードが/etc/shadow
に保存されていることを意味します ファイル)。 - ユーザーID番号(UID)。
- ユーザーのグループID番号(GID)。
- ユーザーのフルネーム(GECOS)。
- ユーザーのホームディレクトリ。
- ログインシェル(デフォルトは
/bin/bash
。
ユーザー名のみを表示する場合は、awk
のいずれかを使用できます またはcut
ユーザー名を含む最初のフィールドのみを出力するコマンド:
awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd
root
daemon
bin
sys
sync
...
...
sshd
vagrant
jack
anne
getentコマンドを使用してすべてのユーザーのリストを取得する#
getent
コマンドは、/etc/nsswitch.conf
で構成されたデータベースからのエントリを表示します passwd
を含むファイル データベース。すべてのユーザーのリストを照会するために使用できます。
すべてのLinuxユーザーのリストを取得するには、次のコマンドを入力します。
getent passwd
ご覧のとおり、出力は/etc/passwd
のコンテンツを表示する場合と同じです。 ファイル。ユーザー認証にLDAPを使用している場合は、getent
両方の/etc/passwd
からのすべてのLinuxユーザーを表示します ファイルとLDAPデータベース。
awk
を使用することもできます またはcut
ユーザー名を含む最初のフィールドのみを出力するには:
getent passwd | awk -F: '{ print $1}'
getent passwd | cut -d: -f1
ユーザーがLinuxシステムに存在するかどうかを確認します#
すべてのユーザーを一覧表示する方法がわかったので、Linuxボックスにユーザーが存在するかどうかを確認するには、リストをgrep
にパイプすることで、ユーザーのリストをフィルタリングするだけです。 コマンド。
たとえば、jack
という名前のユーザーが Linuxシステムに存在する場合、次のコマンドを使用できます:
getent passwd | grep jack
ユーザーが存在する場合、上記のコマンドはユーザーのログイン情報を出力します。ユーザーが存在しないことを意味する出力はありません。
grep
を使用せずにユーザーが存在するかどうかを確認することもできます 以下に示すコマンド:
getent passwd jack
以前と同じように、ユーザーが存在する場合、コマンドはユーザーのログイン情報を表示します。
システムにあるユーザーアカウントの数を知りたい場合は、getent passwd
をパイプ処理します。 wc
への出力 コマンド:
getent passwd | wc -l
33
上記の出力からわかるように、私のLinuxシステムには33のユーザーアカウントがあります。
システムユーザーと通常ユーザー#
システムと通常の(通常の)ユーザーの間に実際の技術的な違いはありません。通常、システムユーザーは、OSと新しいパッケージをインストールするときに作成されます。場合によっては、一部のアプリケーションで使用されるシステムユーザーを作成できます。
通常のユーザーとは、rootまたはsudo権限を持つ別のユーザーによって作成されたユーザーです。通常、通常のユーザーは実際のログインシェルとホームディレクトリを持っています。
各ユーザーには、UIDと呼ばれる数値のユーザーIDがあります。 useradd
で新しいユーザーを作成するときに指定されていない場合 コマンドを実行すると、UIDは/etc/login.defs
から自動的に選択されます。 UID_MIN
に応じたファイル およびUID_MIN
値。
UID_MIN
を確認するには およびUID_MIN
システムの値については、次のコマンドを使用できます:
grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
UID_MIN 1000
UID_MAX 60000
上記の出力から、すべての通常のユーザーが1000〜60000のUIDを持つ必要があることがわかります。最小値と最大値がわかれば、システム内のすべての通常ユーザーのリストを照会できます。
以下のコマンドは、Linuxシステムのすべての通常のユーザーを一覧表示します。
getent passwd {1000..60000}
vagrant:x:1000:1000:vagrant,,,:/home/vagrant:/bin/bash
jack:x:1001:1001:,,,:/home/jack:/bin/bash
anne:x:1002:1002:Anne Stone,,,:/home/anne:/bin/bash
patrick:x:1003:1003:Patrick Star,,,:/home/patrick:/usr/sbin/nologin
システムのUID_MIN
およびUID_MIN
値は異なる場合があるため、上記のコマンドのより一般的なバージョンは次のようになります。
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}
ユーザー名のみを印刷する場合は、出力をcut
にパイプするだけです。 コマンド:
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1
結論#
このチュートリアルでは、Linuxシステムのユーザーを一覧表示してフィルタリングする方法と、システムユーザーと通常のLinuxユーザーの主な違いを学びました。
同じコマンドが、Ubuntu、CentOS、RHEL、Debian、LinuxMintなどのすべてのLinuxディストリビューションに適用されます。
ご不明な点がございましたら、お気軽にコメントをお寄せください。