すべてのユーザーのデフォルトのシェルをbashに変更するにはどうすればよいですか?


38

今後、すべての新規ユーザーがデフォルトでシェルとしてbashを使用するようにします。

自分のシェルをbashに変更するには、コマンド「chsh -s / bin / bash」を使用することを知っていますが、将来のすべてのユーザーのシェルをデフォルトで自動的にbashに設定するにはどうすればよいですか?

回答:


63

ユーザーを追加する

adduserデフォルトファイルがあります/etc/adduser.confDSHELL変数によって定義されたデフォルトのシェルは/bin/bashデフォルトです。

useradd

ほとんどの場合、useraddは非常に低レベルのユーティリティであり、直接使用されることはほとんどないため、これは必要ありません。

useraddを使用する場合は、/etc/default/useraddスケルトンファイルを編集します(ただし、バックアップを作成することを忘れないでください)。

SHELL変数をの/bin/bash代わりに設定します/bin/sh

これでuseradd、新しいユーザーの追加に使用するたびに、bash自動的にデフォルトのシェルになります。

すでに既存のユーザー

既存のユーザーのシェルを変更する場合は、/etc/passwdファイルを編集する必要があります(バックアップを必ず取ってください)。

ここに列の説明があります

  1. ログイン名
  2. オプションの暗号化パスワード
  3. 数値ユーザーID
  4. 数値グループID
  5. ユーザー名またはコメントフィールド
  6. ユーザーのホームディレクトリ
  7. オプションのユーザーコマンドインタープリター

このようなコロン(:)で区切られた順序で。

root:x:0:0:root:/root:/bin/bash

このファイルの詳細については、manページを参照してくださいman 5 passwd


4
別のユーザーのシェルを変更するより安全な方法は、次のようなものになると思いsudo -u $USER chsh -s $SHELLます。
ジャックオコナー

1
@ JackO'Connorを回答として投稿してください。
オクタヴィアンA.ダミアン

これはUbuntu 16.04では機能していないようです。誰でも修正を知っていますか。
過酷な

26

Octavianが指摘したように、デフォルトを変更する方法は、ユーザーの作成方法によって異なります。ちょうど今、Gnome設定で新しいユーザーを作成しようとしましたが、それに続くよう/etc/default/useraddですので、それが最善の策かもしれません。既存のユーザーにとって、他の誰かのログインシェルを変更する最も安全な方法はusermod使用することです:

usermod -s /bin/bash $USERNAME

rootでない場合は、それをsudoする必要があります。別の方法として、変更するユーザーにsudoを実行し、次のようにchshを実行するだけです。

sudo -u $USERNAME chsh -s /bin/bash

/etc/passwd手作業での編集は避けるのが最善です。そこに誤りがあると、あらゆる種類のものが壊れる可能性があるからです。


1

サーバー上のすべてのユーザーに実際にbashを実行させたい場合(実際に質問されました)、次のコマンドを実行できます。

sudo dpkg-reconfigure dash

そして、ダッシュなしを選択します。この回答で説明したように、

/ bin / shが/ bin / bashを指すようにするにはどうすればよいですか?

これにより、bashがデフォルトのシェルとして設定されるだけでなく、shとmanページが正しく再ポイントされます。

お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.