Linuxでユーザーを一覧表示する方法
公開: 2022-06-25Linuxはマルチユーザーオペレーティングシステムであるため、多数のユーザーアカウントを簡単に作成できます。 時間の経過とともに、どのアカウントが必要かを見失いがちです。 ユーザーアカウントを一覧表示すると、それらを管理するのに役立ちます。
ユーザーアカウント
技術の進歩はしばしば彼ら自身の新しい問題をもたらします。 コンピュータが複数のユーザーをサポートできるようになるとすぐに、他のすべての人からの各人の作業をリングフェンスしてカプセル化する必要性が明らかになりました。 これがユーザーアカウントの概念につながりました。 各ユーザーには、名前付きIDとパスワードがあります。 これらは、アカウントにログインするための資格情報です。 それらのファイルは、各ユーザー専用の領域に保存されます。
忙しいシステムでは、作成したアカウントと不要になったアカウントを見失うことがよくあります。 セキュリティの観点から、コンピューターで構成してアクセスする必要がなくなったユーザーアカウントを保持することはお勧めできません。 それらのユーザーを削除する必要があります。
コンピュータを使用している人が他にいない場合でも、その方法を学ぶため、または管理プロセスを学び、実践するためだけに、いくつかのアカウントを作成した可能性があります。
最初のステップは、コンピューターに構成されているユーザーアカウントを一覧表示することです。 それはあなたがそれらをレビューし、削除することができる判断の呼び出しを行うことを可能にします。 ユーザーを一覧表示する方法はいくつかあります。 使用しているディストリビューションに関係なく、これらの手法は、アプリケーションやユーティリティをインストールしなくても機能するはずです。
catコマンドでユーザーを一覧表示する
構成されたユーザーのリストは、各ユーザーに関する情報とともに、「/ etc/passwd」ファイルに保持されます。 これは、通常のユーザーがターミナルウィンドウに一覧表示できるテキストファイルです。 「/etc/passwd」ファイルを調べるためにsudo
を使用する必要はありません。
cat
コマンドを使用して、「/ 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
この図には、アプリケーションによって作成されたシステムアカウントとユーザーが含まれています。 このコンピューターには、約400人の通常のユーザーが構成されています。 結果ははるかに少なくなる可能性があります。
アカウントが非常に多いため、「/ etc/passwd」ファイルの表示に使用する回数をless
方が便利です。
少ない/etc/ passwd
less
を使用すると、特定のユーザーアカウントを検索する場合に、出力内を検索することもできます。
awkコマンド
awk
コマンドを使用すると、ユーザー名だけを表示できます。 これは、多くのユーザーアカウントに対して何かを行う必要があるスクリプトを作成するときに役立ちます。 ユーザーアカウント名を一覧表示してテキストファイルにリダイレクトすると、時間を大幅に節約できます。 次に行う必要があるのは、コマンドの残りの部分をコピーして各行に貼り付けることだけです。
コロン「:」をフィールド区切り文字として使用し、最初のフィールドを出力するようにawkに指示します。 -F(フィールドセパレータ)オプションを使用します。
awk -F:'{print $ 1}' / etc / passwd
ユーザーアカウント名は、他のアカウント情報なしでターミナルウィンドウに書き込まれます。
カットコマンド
cut
コマンドを使用して同じようなことを実現できます。 -d
(区切り文字)オプションを使用し、 -f
(フィールド)オプションを使用して最初のフィールドのみを選択するように要求する必要があります。
cutr -d:-f1
これには、システムやその他の人間以外のアカウントを含む、すべてのユーザーアカウントが一覧表示されます。
compgenコマンド
compgen
コマンドを-u
(user)オプションとともに使用して、ユーザーアカウントを一覧表示できます。 1行に1つのユーザー名を持つ1つの長いリストではなく、 column
コマンドを使用して出力をパイプ処理し、ユーザーアカウントを列にリストします。
compgen -u | 桁
繰り返しますが、リストされている最初のユーザーアカウントは、人間ではなくプロセスに属しています。
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
これにより、 cat
を使用して取得できるのと同じ読み取り値が得られます。 しかし、 getent
が輝いているのは、「キー」と呼ばれる値を受け入れることです。 キーは、 getent
が報告する情報を指示します。 1人のユーザーのエントリを表示する場合は、コマンドラインでユーザーアカウント名を渡すことができます。
getent passwd Sarah
ユーザーアカウント名では大文字と小文字が区別されることに注意してください。
getent passwd sarah
表示したいユーザーアカウントIDの上限と下限を渡すこともできます。 すべての通常のユーザーアカウントを完全に表示するには、 UID_MIN
およびUID_MAX
の値を使用できます。
getent passwd {1000..60000}
これは実行に時間がかかります。 最終的には、コマンドプロンプトに戻ります。
実行時間が長い理由は、 getent
が60000までのすべてのユーザーアカウント値に一致するものを見つけようとするためです。
最高のユーザーアカウントIDが何であるかを見てみましょう。 cut
コマンドを使用しますが、今回はフィールド3、ユーザーIDフィールドを要求します。 sort
を介して出力をパイプ処理し、 -g
(一般的な数値ソート)オプションを使用します。
カット-d:-f3 / etc / passwd | 並べ替え-g
人間が所有するユーザーアカウントの最大ID値は1401です。
ユーザーID65534は、「誰もいない」というシステムコンセプトに割り当てられています。
getent passwd {65534..65534}
したがって、このコンピューターでは、 UID_MAX
値60000を使用する代わりに、1500などのより現実的な値を使用できることがわかります。これにより、処理速度が大幅に向上します。 また、出力をcut
にパイプして、ユーザーアカウントの名前だけを抽出します。
getent passwd {1000..1500} | カット-d:-f1
ユーザーが一覧表示され、すぐにコマンドプロンプトに戻ります。
出力をcut
にパイプする代わりに、出力をwc
にパイプして、もう一度行を数えましょう。 これにより、「実際の」ユーザーアカウントの数がわかります。
getent passwd {1000..1500} | wc -l
これで、このコンピューターには、400個の構成済みの人間所有のユーザーアカウントがあることがわかります。
パワーとシンプルさ
これらの手法の1つは、Linuxコンピューターでユーザーアカウントを確認する必要がある場合のニーズに確実に適合します。 これらのコマンドはすべてのディストリビューションに存在する必要があり、 sudo
アクセスを必要としないため、すべてのユーザーが使用できます。
関連: Linuxでsudoアクセスを制御する方法