web-dev-qa-db-ja.com

デフォルトのシェルを変更しようとしたときに、ユーザーが/ etc / passwdに存在しない

デフォルトのシェルをtcshからbashに変更したい。だから私は試しましたが、これは何が起こったのですか:

>Sudo chsh userid
Changing the login Shell for userid
Enter the new value, or press ENTER for the default
        Login Shell [/xhbin/tcsh]: /bin/bash
chsh: user 'userid' does not exist in /etc/passwd

実際、私は/ etc/passwdにはいません。理由はわかりません。

私に何ができる?

20
rmp251

私のコンピューターは分散認証を使用するネットワークの一部であるため、ユーザーの詳細はローカルの/ etc/passwdファイルに表示されません(ただし、getent passwd useridを使用して表示されます)。 (ありがとう@steeldriver)私の場合、コアマシンでchshを実行する必要がありました。

12
rmp251

gnome-terminalの回避策があります:

  1. 編集-> プロファイル設定-> タイトルとコマンドに移動します
  2. チェックシェルの代わりにカスタムコマンドを実行
  3. bashカスタムコマンド(またはfishなど)として指定します
11
MrMeszaros

ユーザーのシェルを変更する場合は、rootになる必要はありません。次のように入力します:

chsh

Sudoおよび引数なし。


man chshも参照してください:

 chshコマンドは、ユーザーログインシェルを変更します。これにより、ユーザーの初期ログインコマンドの名前
が決まります。 通常のユーザーは自分のアカウントの
ログインシェルのみを変更できます;スーパーユーザーは、任意のアカウントのログイン
 Shellを変更できます。
5

PAMなどによるLDAP認証を使用している場合は、LDAPサーバーで答えを見つける必要があります。 Microsoft ADを目指しましょう。この場合、ログイン時にドメインアカウントは/etc/passwdにありませんが、getent passwd | grep userでADのユーザープロパティを確認できます。

最後に、シェルが/bin/cshであることが示されている場合、ADにはそのための属性があるためです。したがって、ADの管理者アカウントがある場合は、自分で修正できます。それ以外の場合は、AD管理者に、Active Directoryユーザーとコンピューター>(ユーザープロパティ)> UNIX属性Viewタブで高度な機能を有効にするよう指示します。そこで、ログインシェルを/bin/bashに変更できます。

実行することを忘れないでください:

Sudo /opt/pbis/bin/config LoginShellTemplate /bin/bash

ソース: デフォルトのシェルを変更しようとすると、ユーザーは/ etc/passwdに存在しません

5
Masoud

ユーザー名を忘れた場合は、whoamiコマンドを使用して記憶することができます。

だから、試してみてください:

Sudo chsh $(whoami)

実際、/etc/passwdファイルにユーザー名で始まる行(説明できないように見える)が存在しない場合は、次のような新しい行を追加できます。

username:x:1000:1000:あなたの本名、、、:/ home /username:/ bin/bash

参照: / etc/passwdファイル形式について

2
Radu Rădeanu