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


22

デフォルトのシェルを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にはいません。理由はわかりません。

私に何ができる?


11
システムは分散認証を使用していますか(例:kerberos / winbind)?その場合、ユーザーの詳細はローカルの/ etc / passwdファイルに表示されません(ただし、を使用して表示されるはずですgetent passwd <userid>)。chshその場合、実行がサポートされているかどうかは、次の設定に依存する可能性があると思います/etc/pam.d/
-steeldriver

回答:


15

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


11
「コアマシン」とは何か説明できますか?
ネルヴェ14年

私の場合、学生がログインして使用(共有)できるネットワーク内の大学が提供する専用マシンのセットを指します。私のオフィスにある自分のマシンとは対照的。
rmp251 14年

4
@ rmp251これはまさに私のシナリオです。コアマシンにアクセスできません。それ以外の場合、シェルを変更する方法を見つけましたか?
オタク

@Geekはそれを解決する方法を見つけましたか?
milushov

13

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

  1. 移動し、編集 - > プロファイル設定 - > タイトルとコマンド
  2. [ シェルの代わりにカスタムコマンドを実行する]をオンにします
  3. カスタムコマンド(または、その他)bashとして提供するfish

ありがとう!設定を介して端末(または新しい端末タブ)を開いたときにすぐに実行するコマンドを提供してくれました。
cacoder

これは、KDEのKonsoleおよびyaakuakeでも機能します。
xgdgsc

6

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

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

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

sudo /opt/pbis/bin/config LoginShellTemplate /bin/bash

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


1
質問は、1人のユーザーのシェルを変更することでしたが、pbis configはすべてのユーザーに対して変更されました。
クバンチク

5

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

chsh

sudo引数なしと引数なし。


こちらもご覧くださいman chsh

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

sudoを使用した理由は、sudoなしでは何もしなかったからです。 > whoami userid > chsh You may not change the shell for 'userid'.
rmp251 14年

動作する理由は、chshがkerberosで動作しないためです
Lennart Rolland

2

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

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

sudo chsh $(whoami)

実際、/etc/passwdファイル内のユーザー名で始まる行が存在しない場合(これは不可解と思われる)、次のような新しい行を追加できます。

ユーザー名:x:1000:1000:あなたの本名、、、、:/ home / ユーザー名:/ bin / bash

参照:理解/ etc / passwdファイルのフォーマットを


1
ユーザーが/ etc / passwdに存在しない理由の1つは、認証がそのマシン(例:ldap)で処理されない場合
-MatrixManAtYrService

1

ドメインユーザーを使用してリモートホストにSSH接続しようとしている場合chsh、@ Masoudが述べたように使用してシェルを変更できない可能性があります。しかし、この場合の簡単な回避策があります-マシンにsshするたびに、これを行います:

ssh my-host -t "zsh --login"

または

ssh my-host -t "cd /data/repos; zsh --login"

別の作業ディレクトリに直接ログインしたい場合。

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