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





