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

ユーザーは、Linuxシステムで最も重要なコンポーネントです。 Linuxは、管理者がユーザーを効率的に管理できるようにする組み込みコマンドを管理者に提供します。ユーザーの作成、ユーザーの削除、およびユーザー権限の変更用に1つあります。しかし、現在システムに存在するすべてのユーザーを一覧表示するのはどうでしょうか。

この記事では、Linuxのすべてのユーザーのリストを取得する方法と、ユーザーがシステムに存在するかどうかを確認するための簡単なガイドについて説明します。

Linuxですべてのユーザーのリストを表示する方法

新しいユーザーを作成すると、ユーザー名、パスワード、およびその他の詳細がLinuxマシンの特定のファイルに保存されます。幸いなことに、Linuxでは、このようなファイルを制限なく読み取って変更することができます。これらのファイルを使用すると、ユーザー名、ユーザー数など、ユーザーに関連する情報を知ることができます。

Passwdファイルの使用

passwdファイルは、システムに現在存在するすべてのユーザーのパスワードレコードを含むテキストファイルです。このファイルは、ローカルストレージの/ etcディレクトリにあり、次の情報が含まれています。

  1. ユーザー名
  2. 暗号化されたパスワード
  3. ユーザーID
  4. ユーザーのグループID
  5. フルネーム
  6. ユーザーの/ homeディレクトリ
  7. ユーザーのログインシェル

ターミナルにcat / etc / passwd以下/ etc / passwdと入力して、テキストファイルを読み取ります。 / etc / passwdファイルを開くと、次のような出力が生成されます。

 root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh

前述の出力には、ユーザーに関連する情報を含む7つのフィールドが含まれています。これらのフィールドは区切り文字で区切られます—この場合はコロンです。出力の各行は、単一のユーザーを示します。

passwdファイルを使用してすべてのユーザー名のリストを取得するには:

 awk -F: '{ print $1}' /etc/passwd

Awkは、Linuxユーザーが端末から迅速な操作を実行する単純な「1行」プログラムを作成できるようにするコマンドラインユーティリティです。上記のコードでは:

  1. -Fはフィールド区切り文字を表します。コロン文字は/ etc / passwdファイルの区切り文字であるため、awkコマンドの区切り文字としてコロンを渡します。
  2. {print $ 1}は、最初のフィールドを印刷するようにシステムに指示します。この場合、最初のフィールドはユーザーのユーザー名です。
  3. / etc / passwdファイルには、ユーザーに関連するデータが含まれています。

上記のコマンドを実行すると、すべてのユーザーのユーザー名が出力されます。 / etc / passwdファイルにはシステムユーザーが含まれているため、出力にはユーザー名も含まれます。

 root
daemon
bin
sys
sync
games
man

ユーザーのフルネームを出力するために、awkコマンドを少し微調整することができます。次のコマンドを入力して、Linuxのユーザーのフルネームを表示します。

 awk -F: '{ print $5}' /etc/passwd

システムユーザーは同じユーザー名とフルネームを持っているため、出力に違いはありません。システムに追加したユーザーのみが、異なるユーザー名とフルネームを持ちます。

または、awkコマンドの代わりにcutを使用することもできます。 cutの構文は、awkコマンドと非常によく似ています。

カットを使用してLinuxでユーザー名を印刷するには:

 cut -d: f1 /etc/passwd

ここで、 -dは区切り文字、 f1は最初のフィールド(ユーザー名)、 / etc / passwdはデータを含むテキストファイルです。

カットを使用してユーザーの名を印刷するには:

 cut -d: f5 /etc/passwd

同様に、 f5f1-f7に置き換えるだけで、 / etc / passwdファイルから他のフィールドを出力できます。

関連: Linuxパスワードを変更する方法

getentコマンドでユーザーを一覧表示する

getentコマンドは、システムのデータベースとして機能する重要なテキストファイルの内容を出力します。 / etc / passwd/etc/nsswitch.confなどのファイルには、それぞれユーザーとネットワークに関連する情報が含まれており、getentコマンドを使用して読み取ることができます。

getentを使用して/ etc / passwdファイルのコンテンツを印刷するには:

 getent passwd

出力には、コロン文字で区切られた7つの異なるフィールドが含まれます。各フィールドは、ユーザー名やユーザーのホームディレクトリパスなどの特定の情報用に予約されています。

 root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh

getentコマンドをawkまたはcutとチェーンして、ユーザー名のリストのみを取得できます。

 getent passwd | awk -F: '{print $1}'
getent passwd | cut -d: -f1

ユーザーのフルネームを印刷するには:

 getent passwd | awk -F: '{print $5}'
getent passwd | cut -d: -f5

ユーザーが存在するかどうかを確認する

状況によっては、Linuxシステムにユーザーが存在するかどうかを確認したい場合があります。 grepコマンドは、ファイルから特定のテキストパターンを取得する場合に便利です。

次のコマンドのいずれかを使用して、ユーザーの存在を確認できます。

 compgen -u | grep username
getent passwd | grep username

ユーザーが存在する場合は、ユーザーに関連付けられているログイン情報が画面に表示されます。一方、ユーザーがシステムに存在しない場合、エラーが発生します。

grepを使用せずにユーザーがシステムに存在するかどうかを確認するには:

 getent passwd username

getentまたはcompgenコマンドをgrepおよびechoとパイプして、カスタム出力を表示することもできます。

 getent passwd | grep -q username && echo "User found" || echo "User not found"
compgen -u | grep -q username && echo "User found" || echo "User not found"

上記のコマンドは、ユーザーがシステムに存在する場合は「ユーザーが見つかりました」を出力し、存在しない場合は「ユーザーが見つかりません」を出力します。

システム上のユーザー数を数える

Linuxシステムに存在するユーザーの数を数えるには:

 compgen -u | wc -l
getent passwd | wc -l

上記のコマンドでは、 compgengetentは、すべてのユーザーとそれらに関連するその他の情報を含むリストを表示する責任があります。 wcはワードカウントを表し、出力内のワードまたは行の数をカウントするために使用されます。 -lフラグはLinesを示します

Linuxでのユーザーアカウントの確認

すべてのLinux管理者は、システム上の他のユーザーを管理および管理する方法を知っている必要があります。他のユーザーを作成、削除、制御、および一覧表示できるLinuxコマンドを習得することは、ユーザー管理を開始するための優れた方法です。

Linux環境に慣れることは、初心者の場合の最初の目標です。初めてのLinuxディストリビューションをインストールした直後に実行しなければならないことがいくつかあります。いくつかの基本的なコマンドを学ぶことはそれらの1つであり、Linuxで単純なコンピューティングタスクを実行するために不可欠です。