はじめに
この実験では、いくつかの一般的な方法を使って、Linux システム上にユーザーアカウントが存在するかどうかを確認する方法を学びます。id
コマンドでユーザーの存在を照会する方法、/etc/passwd
ファイル内でユーザーエントリを検索する方法、および getent passwd
コマンドを使ってユーザー情報を検証する方法を調べます。これらの手法は、ユーザーアカウントの存在を迅速かつ効果的に判断するためのさまざまな方法を提供します。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、いくつかの一般的な方法を使って、Linux システム上にユーザーアカウントが存在するかどうかを確認する方法を学びます。id
コマンドでユーザーの存在を照会する方法、/etc/passwd
ファイル内でユーザーエントリを検索する方法、および getent passwd
コマンドを使ってユーザー情報を検証する方法を調べます。これらの手法は、ユーザーアカウントの存在を迅速かつ効果的に判断するためのさまざまな方法を提供します。
このステップでは、id
コマンドを使ってシステム上に特定のユーザーが存在するかどうかを確認する方法を学びます。id
コマンドは、現在のユーザーまたは指定されたユーザーのユーザーおよびグループ情報を表示する汎用的なツールです。
すでに id
を使って自分自身のユーザーおよびグループ情報を確認しています。では、これを使って別のユーザーに関する情報を照会してみましょう。
特定のユーザーを確認するための基本的な構文は次のとおりです。
id [username]
ユーザーが存在する場合、このコマンドはそのユーザー ID (uid)、グループ ID (gid)、および所属するグループを出力します。ユーザーが存在しない場合、コマンドは通常、ユーザーが不明であることを示すエラーメッセージを返します。
存在するユーザー、たとえば root
を確認してみましょう。ターミナルに次のコマンドを入力して Enter キーを押します。
id root
次のような出力が表示されるはずです。
uid=0(root) gid=0(root) groups=0(root)
これにより、root
ユーザーが存在することが確認され、そのユーザーおよびグループ ID が表示されます。
では、このシステム上に存在しない可能性の高いユーザー、たとえば nonexistentuser
という名前のユーザーを確認してみましょう。次のコマンドを入力して Enter キーを押します。
id nonexistentuser
ユーザーが見つからないことを示すエラーメッセージが次のように表示されるはずです。
id: ‘nonexistentuser’: no such user
これは、id
コマンドを使ってシステム上にユーザーアカウントが存在するかどうかを迅速に判断できることを示しています。
id
コマンドは、ユーザーとそのグループ所属に関する詳細情報を取得する強力な方法であることを忘れないでください。
続ける をクリックして次のステップに進みます。
このステップでは、/etc/passwd
ファイルを調べることでユーザーの存在を確認する別の方法を探ります。このファイルは Linux システムの基本的な構成要素であり、ユーザーアカウントに関する情報を含んでいます。
/etc/passwd
ファイルには、各ユーザーの重要な詳細情報が格納されており、ユーザー名、ユーザー ID (UID)、グループ ID (GID)、ホームディレクトリ、およびデフォルトのシェルが含まれます。ファイル内の各行は 1 つのユーザーアカウントを表し、フィールドはコロン (:
) で区切られています。
cat
コマンドを使って /etc/passwd
ファイルの内容を表示し、grep
コマンドを使ってその中から特定のユーザー名を検索することができます。
まず、/etc/passwd
ファイルの全内容を表示してみましょう。ターミナルに次のコマンドを入力して Enter キーを押します。
cat /etc/passwd
多数の行が表示され、各行がユーザーアカウントを表しています。出力は次のようになります(数行のみ表示)。
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh
...
では、grep
を使って labex
のような特定のユーザーを検索してみましょう。cat /etc/passwd
の出力を grep labex
にパイプします。パイプ記号 (|
) は、左側のコマンドの出力を右側のコマンドの入力として送ります。
次のコマンドを入力して Enter キーを押します。
cat /etc/passwd | grep labex
labex
ユーザーが存在する場合、/etc/passwd
ファイル内の labex
ユーザーに対応する行が表示されます。
labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh
ユーザーが存在しない場合、grep
は一致するものを見つけず、出力はありません。
nonexistentuser
を再度検索してみましょう。
cat /etc/passwd | grep nonexistentuser
このコマンドは出力を生成せず、nonexistentuser
ユーザーが /etc/passwd
ファイル内に見つからないことを示します。
/etc/passwd
ファイルを直接検索することは、特にスクリプトでユーザーの存在を確認する一般的な方法です。ただし、このファイルにはローカルのユーザーアカウントのみが含まれていることに注意する必要があります。ネットワークサービス(LDAP など)を通じて管理されているユーザーはここに表示されない場合があります。
続ける をクリックして次の方法に進みます。
このステップでは、getent
コマンドについて学びます。このコマンドは、パスワードデータベースを含む Name Service Switch (NSS) データベースからエントリを取得する、より堅牢な方法です。getent
コマンドは、/etc/passwd
のようなローカルファイルだけでなく、LDAP や NIS のようなネットワークベースのソースもクエリできるため、特に便利です。
getent
を使ってパスワードデータベースをクエリする基本的な構文は次のとおりです。
getent passwd [username]
ユーザーが構成された NSS ソースのいずれかに存在する場合、getent
はパスワードデータベースから対応する行を出力します。これは cat /etc/passwd
を使ったときと同様です。ユーザーが存在しない場合、getent
は出力を生成せず、非ゼロのステータスで終了します。
getent
を使って labex
ユーザーを確認してみましょう。ターミナルに次のコマンドを入力して Enter キーを押します。
getent passwd labex
labex
ユーザーの行が表示されるはずです。
labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh
では、getent
を使って nonexistentuser
を再度確認してみましょう。次のコマンドを入力して Enter キーを押します。
getent passwd nonexistentuser
このコマンドは、/etc/passwd
に対して grep
を使ったときと同様に、出力を生成しません。ただし、getent
はシステムの NSS 設定を尊重し、様々なソースからユーザーを見つけることができるため、直接 /etc/passwd
を解析するよりも一般的に好まれます。
終了ステータスの違いを確認するには、コマンドを実行した後に $?
の値を確認できます。$?
には、最後に実行されたコマンドの終了ステータスが格納されます。値が 0
は通常成功を示し、非ゼロの値はエラーを示します。
labex
に対して getent
コマンドを再度実行し、終了ステータスを確認します。
getent passwd labex
echo $?
ユーザー情報の後に 0
が表示されるはずです。
では、nonexistentuser
に対して getent
コマンドを実行し、終了ステータスを確認します。
getent passwd nonexistentuser
echo $?
getent
からの出力はなく、その後に非ゼロの値(多くの場合 1
または 2
)が表示されるはずです。
getent
を使い、その終了ステータスを確認することは、ユーザーがローカルで定義されているかネットワークサービスを通じて定義されているかに関係なく、Linux システム上にユーザーが存在するかどうかをプログラム的に判断する信頼性の高い方法です。
これで、Linux でユーザーの存在を確認する 3 つの異なる方法を学びました!
続ける をクリックしてこの実験を完了します。
この実験では、Linux でユーザーアカウントが存在するかどうかを確認する 3 つの方法を学びました。まず、id
コマンドを使用しました。このコマンドは、ユーザーが存在する場合はユーザーとグループの情報を提供し、存在しない場合はエラーを表示します。これを root
ユーザーと存在しないユーザーを確認することで実証しました。
次に、ユーザーアカウントの詳細を含むコアシステムファイルである /etc/passwd
ファイルを調べました。このファイルを検索することで、ユーザーのエントリが存在するかどうかを判断できます。最後に、getent passwd
コマンドを利用しました。これは /etc/passwd
を含む様々なソースからユーザー情報をクエリする、より堅牢な方法であり、スクリプトや自動化に一般的に推奨されます。