Linux で特定のユーザーのシェルが設定されているかどうかを確認する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux で特定のユーザーのデフォルトシェルを確認する方法を学びます。シェルはコマンドを処理するコマンドラインインタープリターで、異なるユーザーは異なるデフォルトシェルを持つことができます。

あなたは /etc/passwd ファイルを調べてユーザーのデフォルトシェルを特定し、chsh -l コマンドを使用してシステム上で利用可能なシェルを一覧表示する方法を理解し、getent passwd コマンドを使用してユーザーのシェル情報を検証します。この実験は、Linux のユーザー設定を理解するための基本的な知識を提供します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicSystemCommandsGroup -.-> linux/man("Manual Access") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") subgraph Lab Skills linux/help -.-> lab-558766{{"Linux で特定のユーザーのシェルが設定されているかどうかを確認する方法"}} linux/man -.-> lab-558766{{"Linux で特定のユーザーのシェルが設定されているかどうかを確認する方法"}} linux/cat -.-> lab-558766{{"Linux で特定のユーザーのシェルが設定されているかどうかを確認する方法"}} end

cat /etc/passwd でユーザーのシェルを確認する

このステップでは、Linux でユーザーのデフォルトシェルを確認する方法を学びます。シェルはコマンドを処理するコマンドラインインタープリターです。異なるユーザーは異なるデフォルトシェルを持つことができます。

/etc/passwd ファイルには、システム上のすべてのユーザーに関する情報が含まれています。このファイルの各行はユーザーを表し、コロン (:) で区切られたフィールドで構成されています。各行の最後のフィールドは、ユーザーのデフォルトシェルを指定しています。

cat コマンドを使用して、/etc/passwd ファイルの内容を表示することができます。

ターミナルが開いていない場合は、開いてください。デスクトップの左側にある Xfce Terminal アイコンから開くことができます。

次に、以下のコマンドを入力して Enter キーを押してください。

cat /etc/passwd

このコマンドは、/etc/passwd ファイルの全内容をターミナルに表示します。システム上の各ユーザーアカウントに対応する多数の行が表示されます。

labex: で始まる行を探してください。これは現在のユーザーのエントリです。行は次のようになります(一部は異なる場合があります)。

labex:x:5000:5000:LabEx user,,,:/home/labex:/usr/bin/zsh

フィールドは以下の通りです。

  1. ユーザー名: labex
  2. パスワードプレースホルダー: x(実際のパスワードハッシュはセキュリティ上の理由で別の場所に保存されています)
  3. ユーザー ID (UID): 5000
  4. グループ ID (GID): 5000
  5. ユーザー情報 (GECOS): LabEx user,,,
  6. ホームディレクトリ: /home/labex
  7. デフォルトシェル: /usr/bin/zsh

この場合、labex ユーザーのデフォルトシェルは /usr/bin/zsh です。これにより、現在使用しているターミナルが実際に zsh であることが確認できます。

/etc/passwd ファイルを理解することは、Linux システム管理の基本です。このファイルを使用すると、ユーザーのデフォルトシェルやホームディレクトリなどの基本的な情報をすばやく取得できます。

Continue をクリックして次のステップに進んでください。

chsh -l で利用可能なシェルを一覧表示する

前のステップで、あなたのデフォルトシェルが /usr/bin/zsh であることを確認しました。では、このシステムで利用可能な他のシェルは何でしょうか?

Linux システムには多くの場合、複数のシェルがインストールされています。chsh コマンドに -l オプションを付けることで、利用可能なシェルを一覧表示できます。

chsh コマンドは通常、ユーザーのログインシェルを変更するために使用されますが、-l オプションを使うと、/etc/shells ファイルに記載されているシェルを一覧表示できます。このファイルには、システム上で有効なログインシェルのリストが含まれています。

ターミナルで以下のコマンドを入力し、Enter キーを押してください。

chsh -l

このコマンドを実行すると、システム上で利用可能な各シェルを表すパスのリストが出力されます。出力は次のようになります。

/bin/sh
/bin/bash
/usr/bin/rc
/usr/bin/rbash
/usr/bin/nologin
/bin/false
/usr/bin/zsh
/usr/bin/ksh
/usr/bin/dash

このリストに /usr/bin/zsh が含まれていることから、このシステムでは有効なシェルであることが確認できます。また、/bin/bash (Bourne Again SHell) や /bin/sh (Bourne SHell) などの他の一般的なシェルも見られるでしょう。

利用可能なシェルを把握することは、デフォルトシェルを変更する必要がある場合や、特定のシェル用に書かれたスクリプトに遭遇した場合に役立ちます。

Continue をクリックして次のステップに進んでください。

getent passwd でシェルを確認する

前のステップでは、/etc/passwd ファイルを直接表示する方法と、利用可能なシェルを一覧表示する方法を学びました。今度は、getent という別のコマンドを使って、シェルを含むユーザー情報を取得しましょう。

getent コマンドは、Name Service Switch (NSS) データベースからエントリを取得するユーティリティです。このデータベースには /etc/passwd/etc/group などが含まれます。getent を使うことで、/etc/passwd を直接読み取るよりも標準化された方法でユーザー情報を取得でき、ネットワークベースのユーザーデータベースもクエリできます。

passwd データベースから labex ユーザーのエントリを取得するには、ターミナルで以下のコマンドを入力して Enter キーを押してください。

getent passwd labex

このコマンドは、passwd データベースから labex ユーザーのエントリを取得するように指定しています。出力は cat /etc/passwd を使ったときに見た行と似ています。

labex:x:5000:5000:LabEx user,,,:/home/labex:/usr/bin/zsh

再び、最後のフィールド /usr/bin/zshlabex ユーザーのデフォルトシェルであることを確認しています。

getent を使用することは、スクリプト内で、またはローカルファイルだけでなく集中認証システム(LDAP など)を使用する可能性のあるシステムをクエリする際に、よく選択されます。ローカルシステムでの簡単な確認には、cat /etc/passwdgetent passwd <username> のどちらも機能します。

これで、Linux のユーザーシェルを理解するために 3 つの異なる方法を成功裏に使用しました。/etc/passwd を直接表示する方法、chsh -l で利用可能なシェルを一覧表示する方法、そして getent でユーザー情報をクエリする方法です。

Continue をクリックして、この実験を完了してください。

まとめ

この実験では、Linux でユーザーのデフォルトシェルを確認する方法を学びました。cat /etc/passwd コマンドを使用してユーザー情報を表示し、特に各行の最後のフィールド(デフォルトシェルを示す)に注目しました。この方法は、/etc/passwd ファイルの構造を調べることで、システム上の任意のユーザーに設定されたシェルを直接特定する手段を提供します。