- 「cat /etc/passwd」または「getent passwd」などのコマンドを使用して、Linuxでユーザーアカウントを一覧表示できます。
- 不要なアカウントはシステムを雑然としたものにし、状況によってはセキュリティリスクをもたらす可能性もあります。
Linuxはマルチユーザーオペレーティングシステムであるため、多くのユーザーアカウントを作成するのは簡単です。時間が経つにつれて、どのアカウントが必要なのかを見失いやすくなります。ユーザーアカウントを一覧表示すると、管理しやすくなります。
余分なユーザーアカウントを気にする理由
通常、余分なアカウントは雑然としたものにするだけですが、セキュリティの脆弱性をもたらす可能性もあります。
技術の進歩は、しばしば新しい問題をもたらします。コンピュータが複数のユーザーをサポートできるようになるとすぐに、各人の作業を他のユーザーから隔離し、カプセル化する必要性が明らかになりました。これがユーザーアカウントの概念につながりました。各ユーザーには、名前付きの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」のエントリには、フルネームがMary Quinnであることが示されています。 - /home/dave:ユーザーのホームフォルダーへのパス。
- /bin/bash:このユーザーのデフォルトシェル。
このコマンドからの出力をwc
ユーティリティにパイプし、-l
(行)オプションを使用すると、ファイル内の行をカウントできます。これにより、このコンピュータに構成されているアカウントの数がわかります。
cat /etc/passwd | wc -l
この数値には、システムアカウントとアプリケーションによって作成されたユーザーが含まれています。このコンピュータには約400人の一般ユーザーが構成されています。おそらく、結果ははるかに少なくなります。
これほど多くのアカウントがある場合、less
を使用して「/etc/passwd」ファイルを表示する方が便利です。
less /etc/passwd
less
を使用すると、特定のユーザーアカウントを検索する場合に、出力内で検索することもできます。
awkコマンド
awk
コマンドを使用すると、ユーザー名だけを表示できます。これは、多くのユーザーアカウントに対して何らかの処理を行う必要があるスクリプトを作成する場合に役立ちます。ユーザーアカウントの名前を一覧表示し、テキストファイルにリダイレクトすると、大幅に時間を節約できます。その後必要なのは、残りのコマンドを各行にコピーして貼り付けるだけです。
awkにコロン「:」をフィールド区切り文字として使用し、最初のフィールドを印刷するように指示します。-F(フィールド区切り文字)オプションを使用します。
awk -F: '{print $1}' /etc/passwd
ユーザーアカウント名は、他のアカウント情報なしでターミナルウィンドウに書き込まれます。
cutコマンド
cut
コマンドを使用して、同じような処理を実行できます。-d
(区切り文字)オプションを使用し、-f
(フィールド)オプションを使用して最初のフィールドのみを選択する必要があります。
cutr -d: -f1
これにより、システムアカウントやその他の非人間アカウントを含む、すべてのユーザーアカウントが一覧表示されます。
compgenコマンド
compgen
コマンドは、-u
(ユーザー)オプションとともに使用して、ユーザーアカウントを一覧表示できます。column
コマンドに出力をパイプして、ユーザーアカウントを列に一覧表示します。1行に1つのユーザー名のみが表示される長いリストではなく。
compgen -u | column
繰り返しますが、最初にリストされたユーザーアカウントは人間ではなく、プロセスに属します。
UID MINとUID MAX
ユーザーアカウントには、前に見たように、数値IDが与えられます。通常、一般の人間ユーザーアカウントは1000から始まり、システムの非人間ユーザーアカウントは0から始まります。rootアカウントのIDは0です。
最も低いユーザーIDと最も高いユーザー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です。
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
(一般的な数値ソート)オプションを使用します。
cut -d: -f3 /etc/passwd | sort -g
人間が所有するユーザーアカウントの最も高いID値は1401です。
ユーザーID 65534は、「nobody」というシステムの概念に割り当てられています。
getent passwd {65534..65534}
したがって、このコンピュータでは、UID_MAX
値の60000を使用する代わりに、1500のようなより現実的な値を使用できます。これにより、処理速度が大幅に向上します。また、出力をcut
にパイプして、ユーザーアカウントの名前だけを抽出します。
getent passwd {1000..1500} | cut -d: -f1
ユーザーが一覧表示され、すぐにコマンドプロンプトに戻ります。
出力をcut
にパイプする代わりに、出力をwc
にパイプして、もう一度行数をカウントしてみましょう。これにより、「実際の」ユーザーアカウントの数がわかります。
getent passwd {1000..1500} | wc -l
このコンピュータには、400人の人間が所有するユーザーアカウントが構成されていることが明確になりました。
パワーとシンプルさ
Linuxコンピュータのユーザーアカウントを確認する必要がある場合、これらのテクニックのいずれかが必ずニーズに合います。これらのコマンドはすべてのディストリビューションに存在するはずであり、どれもsudo
アクセスを必要としないため、すべてのユーザーが使用できます。
コメントする