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ディストリビューションに適用されます。
ご不明な点がございましたら、お気軽にコメントをお寄せください。