GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでユーザーを一覧表示する方法

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ディストリビューションに適用されます。

ご不明な点がございましたら、お気軽にコメントをお寄せください。


Linux
  1. LinuxですべてのSudoユーザーを見つける方法

  2. CentOS7でユーザーを一覧表示する方法

  3. Linuxでユーザーを一覧表示する3つの方法

  1. Linuxで複数のユーザーアカウントを作成する方法

  2. Linuxでユーザーを一覧表示する-最良の方法

  3. Linux グループ内のすべてのユーザーを一覧表示する方法は?

  1. Linuxでユーザーをグループに追加する方法

  2. Linuxでユーザーを一覧表示する方法、すべてのユーザーを一覧表示するコマンド

  3. UbuntuでLinuxユーザーを一覧表示する方法