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

公開: 2022-06-25
bashプロンプトを表示するLinuxラップトップ
fatmawati achmad zaenuri / Shutterstock.com

Linuxはマルチユーザーオペレーティングシステムであるため、多数のユーザーアカウントを簡単に作成できます。 時間の経過とともに、どのアカウントが必要かを見失いがちです。 ユーザーアカウントを一覧表示すると、それらを管理するのに役立ちます。

ユーザーアカウント

技術の進歩はしばしば彼ら自身の新しい問題をもたらします。 コンピュータが複数のユーザーをサポートできるようになるとすぐに、他のすべての人からの各人の作業をリングフェンスしてカプセル化する必要性が明らかになりました。 これがユーザーアカウントの概念につながりました。 各ユーザーには、名前付きIDとパスワードがあります。 これらは、アカウントにログインするための資格情報です。 それらのファイルは、各ユーザー専用の領域に保存されます。

忙しいシステムでは、作成したアカウントと不要になったアカウントを見失うことがよくあります。 セキュリティの観点から、コンピューターで構成してアクセスする必要がなくなったユーザーアカウントを保持することはお勧めできません。 それらのユーザーを削除する必要があります。

コンピュータを使用している人が他にいない場合でも、その方法を学ぶため、または管理プロセスを学び、実践するためだけに、いくつかのアカウントを作成した可能性があります。

Linuxでユーザーを削除する方法(およびすべてのトレースを削除する方法)
Linuxでユーザーを削除する(およびすべてのトレースを削除する)方法

最初のステップは、コンピューターに構成されているユーザーアカウントを一覧表示することです。 それはあなたがそれらをレビューし、削除することができる判断の呼び出しを行うことを可能にします。 ユーザーを一覧表示する方法はいくつかあります。 使用しているディストリビューションに関係なく、これらの手法は、アプリケーションやユーティリティをインストールしなくても機能するはずです。

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

構成されたユーザーのリストは、各ユーザーに関する情報とともに、「/ etc/passwd」ファイルに保持されます。 これは、通常のユーザーがターミナルウィンドウに一覧表示できるテキストファイルです。 「/etc/passwd」ファイルを調べるためにsudoを使用する必要はありません。

Linuxでchfnとusermodを使用してユーザーデータを変更する方法
Linuxでchfnとusermodを使用してユーザーデータを変更する方法

catコマンドを使用して、「/ etc/passwd」ファイルの内容をターミナルウィンドウに送信できます。 これにより、ファイルの内容全体が一覧表示されます。 つまり、ユーザーではなく、プロセスとシステムが所有するユーザーアカウントのエントリも表示されます。

 cat / etc / passwd 

/ etc/passwdファイルの内容をcatを使用してターミナルウィンドウに送信する

ユーザーアカウントごとに報告される一連の密な情報があります。

/ etc/passwdファイルの内容

「dave」と呼ばれるユーザーアカウントの情報には、コロン「 : 」を間に挟んでこれらの情報が含まれています。

  • dave :ユーザーアカウントの名前。 通常、アカウントを所有している人の名前。
  • x :かつて、これはアカウントのパスワードを保持していました。 現在、パスワードは「/ etc/shadow」ファイルに保存されています。 「x」は、パスワードがそのファイルにあることを意味します。
  • 1000 :このアカウントのユーザーID。 すべてのユーザーアカウントには一意の数値IDがあります。 通常のユーザーアカウントは通常1000から始まり、新しいアカウントごとに1001、1002などの次の無料IDが使用されます。
  • 1000 :ユーザーが属するデフォルトグループのグループID。 通常の状況では、デフォルトのグループはユーザーIDと同じ値になります。
  • dave 、、、 :ユーザーに関するオプションの追加情報のコレクション。 このフィールドには、間にコンマ「 , 」が含まれるデータが含まれます。 ユーザーの氏名、オフィス番号、電話番号などを保持できます。 ユーザーアカウント「mary」のエントリは、彼女のフルネームがMaryQuinnであることを示しています。
  • / home / dave :ユーザーのホームフォルダーへのパス。
  • / bin / bash :このユーザーのデフォルトのシェル。

このコマンドからの出力をwcユーティリティを介してパイプし、 -l (lines)オプションを使用すると、ファイル内の行を数えることができます。 これにより、このコンピューターで構成されているアカウントの数がわかります。

 cat / etc / passwd | wc -l 

/ etc/passwdファイル内のアカウント数をカウントする

この図には、アプリケーションによって作成されたシステムアカウントとユーザーが含まれています。 このコンピューターには、約400人の通常のユーザーが構成されています。 結果ははるかに少なくなる可能性があります。

アカウントが非常に多いため、「/ etc/passwd」ファイルの表示に使用する回数をless方が便利です。

 少ない/etc/ passwd 

/ etc/passwdファイルをlessで開く

lessを使用すると、特定のユーザーアカウントを検索する場合に、出力内を検索することもできます。

/ etc/passwdファイルでmaryアカウントを検索します。

awkコマンド

awkコマンドを使用すると、ユーザー名だけを表示できます。 これは、多くのユーザーアカウントに対して何かを行う必要があるスクリプトを作成するときに役立ちます。 ユーザーアカウント名を一覧表示してテキストファイルにリダイレクトすると、時間を大幅に節約できます。 次に行う必要があるのは、コマンドの残りの部分をコピーして各行に貼り付けることだけです。

Linuxでawkコマンドを使用する方法
Linuxでawkコマンドを使用する方法

コロン「:」をフィールド区切り文字として使用し、最初のフィールドを出力するようにawkに指示します。 -F(フィールドセパレータ)オプションを使用します。

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

/ etc/passwdからユーザー名のみを選択するawkコマンド

ユーザーアカウント名は、他のアカウント情報なしでターミナルウィンドウに書き込まれます。

ターミナルウィンドウに表示されるユーザーアカウント名

カットコマンド

cutコマンドを使用して同じようなことを実現できます。 -d (区切り文字)オプションを使用し、 -f (フィールド)オプションを使用して最初のフィールドのみを選択するように要求する必要があります。

 cutr -d:-f1 

cutコマンドを使用して、/ etc/passwdファイルのユーザー名のみを表示します

これには、システムやその他の人間以外のアカウントを含む、すべてのユーザーアカウントが一覧表示されます。

compgenコマンド

compgenコマンドを-u (user)オプションとともに使用して、ユーザーアカウントを一覧表示できます。 1行に1つのユーザー名を持つ1つの長いリストではなく、 columnコマンドを使用して出力をパイプ処理し、ユーザーアカウントを列にリストします。

 compgen -u | 桁

compgenおよびcolumnコマンドを使用して、/ etc/passwdファイルのユーザーアカウント名を列に一覧表示します

繰り返しますが、リストされている最初のユーザーアカウントは、人間ではなくプロセスに属しています。

UIDMINおよびUIDMAX

ユーザーアカウントには、前に見た数値IDが与えられます。 通常、通常の人間のユーザーアカウントは1000から始まり、システムの人間以外のユーザーアカウントは0から始まります。ルートアカウントのIDは0です。

可能な限り最小および最大のユーザーIDを確認できれば、その情報を使用して、これら2つの値の間にあるユーザーアカウントを選択できます。 これにより、実在の人物に属するユーザーアカウントのみを選択できるようになります。

Linuxは、 UID_MINおよびUID_MAXと呼ばれる構成パラメーターを使用してこれら2つの値を追跡します。 これらは「/etc/login.defs」ファイルに保持されます。 これらの値は、 grepを使用して簡単に確認できます。

-E (拡張正規表現)オプションを使用します。 検索文字列は、「/ etc/login.defs」ファイルで「UID_MIN」または「UID_MAX」で始まる行を検索します。 キャレット「 ^ 」は行の始まりを表します。

 grep -E'^ UID_MIN | ^ UID_MAX' /etc/login.defs 

このコンピューターのユーザーIDの範囲は1000〜60,000です。

関連: Linuxで正規表現(regexes)を使用する方法

getentコマンド

getentコマンドは、システムデータベースから情報を読み取ります。 「passwd」をパラメータとして使用することで、「/ etc/passwd」ファイルのエントリを一覧表示するように指示できます。

 getent passwd 

getentを使用して/etc/passwdファイルをターミナルウィンドウにダンプします

これにより、 catを使用して取得できるのと同じ読み取り値が得られます。 しかし、 getentが輝いているのは、「キー」と呼ばれる値を受け入れることです。 キーは、 getentが報告する情報を指示します。 1人のユーザーのエントリを表示する場合は、コマンドラインでユーザーアカウント名を渡すことができます。

 getent passwd Sarah

ユーザーアカウント名では大文字と小文字が区別されることに注意してください。

 getent passwd sarah 

getentで単一のユーザーアカウントを探しています

表示したいユーザーアカウントIDの上限と下限を渡すこともできます。 すべての通常のユーザーアカウントを完全に表示するには、 UID_MINおよびUID_MAXの値を使用できます。

 getent passwd {1000..60000} 

getentで上位および下位のアカウントIDを使用する

これは実行に時間がかかります。 最終的には、コマンドプロンプトに戻ります。

getentによってターミナルウィンドウに送信された/etc/passwdファイルの内容

実行時間が長い理由は、 getentが60000までのすべてのユーザーアカウント値に一致するものを見つけようとするためです。

最高のユーザーアカウントIDが何であるかを見てみましょう。 cutコマンドを使用しますが、今回はフィールド3、ユーザーIDフィールドを要求します。 sortを介して出力をパイプ処理し、 -g (一般的な数値ソート)オプションを使用します。

 カット-d:-f3 / etc / passwd | 並べ替え-g 

cutからの出力をsortコマンドにパイプするコマンド

人間が所有するユーザーアカウントの最大ID値は1401です。

ユーザーアカウントIDの並べ替えられたリスト

ユーザーID65534は、「誰もいない」というシステムコンセプトに割り当てられています。

 getent passwd {65534..65534} 

システムユーザーnobody、ID 65534

したがって、このコンピューターでは、 UID_MAX値60000を使用する代わりに、1500などのより現実的な値を使用できることがわかります。これにより、処理速度が大幅に向上します。 また、出力をcutにパイプして、ユーザーアカウントの名前だけを抽出します。

getent passwd {1000..1500} | カット-d:-f1

ユーザーアカウント名を一覧表示するためにカットを介してパイプされたgetentの出力

ユーザーが一覧表示され、すぐにコマンドプロンプトに戻ります。

出力をcutにパイプする代わりに、出力をwcにパイプして、もう一度行を数えましょう。 これにより、「実際の」ユーザーアカウントの数がわかります。

 getent passwd {1000..1500} | wc -l 

getentとwcを使用して通常のユーザーアカウントをカウントする

これで、このコンピューターには、400個の構成済みの人間所有のユーザーアカウントがあることがわかります。

パワーとシンプルさ

これらの手法の1つは、Linuxコンピューターでユーザーアカウントを確認する必要がある場合のニーズに確実に適合します。 これらのコマンドはすべてのディストリビューションに存在する必要があり、 sudoアクセスを必要としないため、すべてのユーザーが使用できます。

関連: Linuxでsudoアクセスを制御する方法