Linuxでは、 システム管理者の場合、ホスト上のすべてのユーザーとすべてのグループの完全なリストが必要になることがよくあります。
セキュリティ上の理由から、適切な数のユーザーがいることと、一部のユーザーを削除することを忘れていないことを確認することが非常に重要です。
Linuxでユーザーとグループを一覧表示するにはいくつかの方法があります 。
まず、有用な情報を抽出するためのcutコマンドを使用して、システム上のpasswdとgroupファイルを読み取ることができます。
より効果的な方法は、Unixベースの機能であるName Service Switchに依存するgetentコマンドを使用して、ホスト上にカスタムデータベースを定義することです。
Linuxでユーザーとグループを一覧表示する方法は次のとおりです。 。
Linux上のユーザーを一覧表示する
Linuxでユーザーを一覧表示するには、「/ etc/passwd」ファイルで「cat」コマンドを実行する必要があります。このコマンドを実行すると、システムで現在利用可能なユーザーのリストが表示されます。
または、「less」または「more」コマンドを使用して、ユーザー名リスト内を移動することもできます。
$ cat /etc/passwd
$ less /etc/passwd
$ more /etc/passwd
システムで現在利用可能なユーザーのリストが表示されます。
注:ユーザーが接続しているという意味ではありません 今すぐ!
しかし、列は何をしますか passwdファイルの意味は?
簡単に言うと、パスワード列の「x」は、パスワードが暗号化されており、/ etc/shadowファイルにあることを意味します。
Linuxホストでユーザーを一覧表示する方法がわかったところで、ユーザー名の一覧を効果的に分離する方法を見てみましょう。
/ etc/passwdファイルを使用してユーザー名を一覧表示する
お気づきかもしれませんが、 / etc / passwd ファイルはコロンで区切られた行で構成されています。
a –カットを使用してユーザー名を一覧表示する
Linuxでユーザー名を一覧表示するには、「cat」コマンドを使用して「cut」コマンドにパイプし、ファイルの最初の列で使用可能なユーザー名を分離します。
これを実現するには、次のコマンドを実行します
$ cat /etc/passwd | cut -d: -f1
まず、passwdファイル内のすべてのレコードのリストを印刷します。次に、これらの結果は(Linuxパイプとリダイレクトを使用して)cutコマンドにパイプされます。
cutコマンドは、コロン文字と等しいカスタム区切り文字(dオプションを使用)を定義します。
最後に、取得した結果の最初のフィールドを分離します。この場合、これは、passwd列のスキーマで定義されているユーザー名と同じです。
b –awkを使用してユーザー名を一覧表示する
Linuxでユーザー名を一覧表示するには、以前に見た「cut」コマンドと同様の「awk」コマンドと一緒にパイプされた「cat」コマンドを使用することもできます。
念のため、awkコマンド(またはmawk)はAWKプログラミング言語のインタープリターです。
AWKは、データストリームのデータ抽出と操作を容易にするように設計されたプログラミング言語です。
これは、テキスト構造が非常に複雑で、単一のコマンドで分離できない場合に、Unixベースのシステムで広く使用されています。
awkインタープリターを使用してLinuxでユーザー名を一覧表示するには、次のコマンドを実行します
$ cat /etc/passwd | awk -F: '{print $1}'
getentを使用してLinux上のユーザーを一覧表示する
Linuxでユーザーを一覧表示する最も簡単な方法は、「getent」コマンドを「passwd」引数とともに使用して、システムに一覧表示するオプションのユーザーを指定することです。
getent passwd <optional_user>
注意として、getentコマンドは NameServiceSwitchデータベースからエントリを取得します 。
Name Service Switchは、ファイル、LDAP、DNSサーバー、ネットワーク情報サービスなどのさまざまなデータソースのセットからエントリを取得するUnixユーティリティです。 。
利用可能なすべてのデータソースのリストは、 nsswitch.confから読み取ることができます。 /etcにあるファイル。
この場合、Linuxホストでユーザーとグループを簡単に一覧表示するために使用できます。
getent関数を使用してユーザーを一覧表示するには、次のコマンドを実行します
$ getent passwd
a –getentを使用してユーザー名を一覧表示する
前のセクションと同様に、getentコマンドを操作するときにユーザー名のみを一覧表示することができます。
これを実現するには、次の方法でcutコマンドまたはawkコマンドを実行することもできます。
$ getent passwd | cut -d: -f1
またはAWK
$ getent passwd | awk -F: '{print $1}'
Linuxホスト上の接続ユーザーの一覧表示
前に述べたように、passwdファイルをlessまたはgetentで検査しても、実行されません。 ホスト上で接続されているすべてのユーザーのリストを提供します。
これを実現するには、whoコマンドを使用します。
$ who
ご覧のとおり、現在ホストに接続しているユーザーのリストと、使用しているシェルおよび接続したタイミングが表示されます。
または、usersコマンドを使用して、より少ない詳細で同じ結果を得ることができます。
$ users
devconnected john
とても便利です!
Linuxホスト上のユーザーを一覧表示する方法を確認したので、同じ知識をシステム上のグループを一覧表示する方法に適用する方法を見てみましょう。
/ etc/groupファイルを使用してLinux上のグループを一覧表示する
Linuxでグループを一覧表示するには、「/ etc/group」ファイルで「cat」コマンドを実行する必要があります。このコマンドを実行すると、システムで使用可能なグループのリストが表示されます。
次のいずれかのコマンドを使用して、システム上のグループを一覧表示します。
$ cat /etc/group
$ less /etc/group
$ more /etc/group
しかし、グループファイルの列は何を表していますか?
グループファイルの完全な行を調べて調べてみましょう。
ご覧のとおり、passwdファイルと同様に、エントリはコロンで区切られています。それらはかなり理解しやすいです。
注:パスワードフィールドはほとんどの場合使用されません。システム上に特権グループを作成するために予約されています。
/ etc/groupを使用してグループ名を一覧表示する
ご覧のとおり、/ etc / groupを調べると、システム上のすべてのグループの完全な、場合によっては詳細すぎるリストが表示されます。
ただし、グループファイルでグループ名を分離したい場合があります。
これを実現するには、cutコマンドまたはAWKコマンドを使用します。
$ cat /etc/group | cut -d: -f1
$ cat /etc/group | awk -F: '{print $1}'
もちろん、ターゲットにしているグループに属するユーザーを確認したい場合は、1つのグループを分離することを選択できます。
$ cat /etc/group | grep <group>
getentを使用してグループを一覧表示する
ここでも、getentコマンドを使用してLinux上のグループを一覧表示することを選択できます。
$ getent <database> <key>
ここでは、「グループ」データベースに関心があります。
キーを提供しないことを選択した場合は、グループファイル全体が提供されます。
$ getent group
passwdデータベースと同様に、getent関数にキーを提供することで、特定の1つのグループを「ターゲット」にすることを選択できます。
$ getent group sudo
現在のユーザーのグループを一覧表示する
groupsコマンドは、特定のユーザーが所属するグループのリストを取得するために使用されます。
$ groups <username>
引数が指定されていない場合は、コマンドを起動したユーザーのグループが返されます。
コマンドを起動したユーザーにグループが提供されていることを証明するには、sudo権限でコマンドを起動してみてください。
$ sudo groups
結果は..ルートです!コマンドはルートとして実行され、ルートはルートグループである1つのグループにのみ属しているためです。
結論
このチュートリアルでは、Linuxベースのシステムでユーザーとグループを一覧表示する方法を学びました。
passwdやgroupなどの特定の構成ファイルについて詳しく学びました 、および NameServiceSwitch機能のgetentコマンド。
繰り返しになりますが、Linuxシステム管理に興味がある場合は、Linuxシステム管理カテゴリにこのテーマに関するチュートリアルがたくさんあります。
下の画像をクリックして確認してください。