単一の Linux/Unix ディストリビューションで、ユーザーごとに異なるシェルを設定できますか?

単一の Linux/Unix ディストリビューションで、ユーザーごとに異なるシェルを設定できますか?

まあ、これは私がやりたいことではありませんが、Unix/Linux システムのシェル構成について詳しく知るためにこの質問をしています。したがって、私が答えを知りたい状況は次のとおりです。

Unix/Linux システムではさまざまなシェルが利用可能になっているので、システムへのアクセスを許可されたユーザーごとに異なるシェルを設定することは可能ですか。たとえば、Tom、Dick、Harry の 3 人のユーザーが「Unix」システムの使用を許可されており、「Tom」にシェルを使用させたいとします。翻訳、ディックを使用するtcshそしてハリーはバッシュシェル。どうすればこれを実行できますか? また、これは可能ですか?

答え1

まず、有効なシェルが にリストされています。 ファイル内にある限り、/etc/shellsどのユーザーも を使用してデフォルトのシェルを変更できます。 chsh/etc/shells

2 番目に、シェルを追加したい場合は/etc/shells、そこからエントリ (特に /bin/sh) を削除すると、/bin/loginそこにリストされていないシェルは通常起動しないため、システムを台無しにする可能性があります。

詳細は以下をご覧くださいchsh(1)ログイン.defs(5)そしてパスワード(5)マニュアルページ

この機能は昔から存在していました(BSD 4.x だったと思います)

答え2

はい、異なるユーザーには異なるシェルを設定できます。たとえば、次のchshコマンドで変更できます。現在のユーザーのシェルを bash に変更するには (/bin/bash にあると仮定)。

chsh -s /bin/bash [username]

ファイルを手動で変更し、そのユーザーのシェルを指定する部分を変更することもできます/etc/passwd。例:

root:*:0:0:System Administrator:/var/root:/bin/sh

/etc/passwd の各行の最後の部分 (上記の行のようになります) は、最後の の後に:、そのユーザーのシェルを指定します。

答え3

使えますよchsh

chsh -s /bin/sh user_name

関連情報