ログインシェルに関して与えられたオプションの中で正しいものは何ですか? [閉鎖]

ログインシェルに関して与えられたオプションの中で正しいものは何ですか? [閉鎖]

ログインシェルに関して、次のオプションのうち正しいものは何ですか?

  1. ユーザーがログインするたびにログインシェルが異なります。カーネルはログイン中にシェルの可用性を決定します。
  2. ログインシェルは、特定のシステムのすべてのユーザーに対して固定されています。構成できません。
  3. 管理者は/etc/passwdファイルでログインシェルを設定できます。
  4. 上記のいずれもありません。

ベストアンサー1

カーネルは、何か(プロセス、ファイル)のラベルであるユーザーの数値ID以外に、ユーザーについて何も知りません。ユーザー空間で発生する「ログイン」という概念はありません。

ログインプロセスを処理するプログラム(loginテキストモードコンソールではディスプレイマネージャグラフィックコンソールでは、デーモン(たとえば、sshdリモートtelnetdログインなど)が最初にユーザーを認証し、他の操作を実行します。ポリアクリルアミドよく使われます。多くの能力認証、ロギング、ユーザーデータベースなどに関連しています。プログラムがrootとして実行から目的のユーザーとして実行に切り替えられた後、ログインプロセスの最後のステップ(成功した場合)はログインシェルを呼び出すことです。

ログインシェルはユーザーアカウントデータベースによって決定されます。ユーザーデータベースにはさまざまな種類があります。最も一般的なものは次のとおりです。/etc/passwd(またはまれに他のファイルを整理して国家安全保障局)はローカルコンピュータ上の単純なテキストファイルです。国家庭園そしてLDAPWebで使用されるネットワークデータベースで、複数のコンピュータでアカウントを使用できます。

ユーザーは次のコマンドを使用してシェルを変更できますchshローカルアカウントのコマンドypchshNIS アカウントの場合chsh.ldapLDAP アカウントの場合。一部の場所では、chsh使用しているすべてのアカウントデータベースタイプに適用するようにコマンドが設定されています。ユーザーはファイルにリストされているシェル間でのみ切り替えることができます/etc/shells。これは、セキュリティ対策(リストにないシェルを持つユーザーは制限されたアカウントを持っていると見なされ、変更できません)であり、セキュリティ対策(なしに変更または制限されたシェルが効果的にロックされる可能性があります)です。アカウントから)。管理者はchshコマンドを実行するか、データベースを直接編集して、すべてのアカウントのログインシェルを変更できます。

正常に構成されたシステムでは、有用なシェルプログラムがリストされ、/etc/shellsこれらのプログラムが実行されます。 (1)は通常、そうでなくてもログインシェルが変更される可能性があり(chshユーザーまたは管理者がいつでも呼び出すことができる)、技術的に正確であり、もちろんプログラムを起動するにはカーネルにプログラムファイルをロードする必要があります。ファイルが存在しないか破損している場合。

-ログインプログラムは、パラメータ0がプログラム名に設定され、前にダッシュが付いたログインシェルを実行します。たとえば、ログインシェルが/bin/bash(フルパスを必要とし、クエリを実行しない$PATH)場合、パラメータ0はです-bash。パラメーター0は通常プログラム名です。追加ダッシュは、シェルにログインシェルとして機能するように指示します。ログインシェルは起動時/etc/profileなどの追加ファイルを実行します~/.profileログインシェルと非ログインシェルの違いは何ですか?このセクションの詳細です。


この多肢選択テストは、すべてのオプションが正しいと解釈できるため、不完全に設計されています。

(1):これは実際にユーザーがログインするたびにログインシェルが決まります。ログインプロセス中にシェルを使用できるかどうかをカーネルが決定する場合も同様です。したがって、技術的に(1)は正確です(技術的精度は正確さの最良の形態です。そうですか?)。しかし、(1)は、カーネル自体がログインシェルが何であるかを決定せず、ログインやシェルの概念さえ持っていないため、誤解を招く可能性があります。

(2)は通常、ユーザーごとにログインシェルが異なる可能性があるため、正しくありません。ただし、一部の設定では、何らかの理由ですべてのユーザーが同じシェルを使用します。たとえば、システム間でアカウントが共有され、どこでも使用が保証される唯一のシェルである異機種ネットワークでは/bin/sh

/etc/passwd(3)は管理者がログインシェルを設定できる場所なので、おそらく予想される答えです。しかし、/etc/passwd自分で編集しないでください、コマンドvipwchsh。また、ローカルではないアカウントは/etc/passwd

おすすめ記事