
インストールしました魚魚(ユーザーフレンドリーな対話型コマンドラインシェル) を Linux サーバーにインストールしましたが、後で誰かがアンインストールしたようですが、その理由はわかりません。chsh -s /usr/local/bin/fish
注意せずに実行したところ、サーバーにログインできなくなりました。エラーメッセージ「ログイン: シェルがありません: そのようなファイルまたはディレクトリはありません」が表示され、どうやらシェルフィッシュがもう存在しないことを示しています。
サーバーは CLI インターフェイスのみを提供しているので、ログインすらできない場合はどうすればログイン シェルを変更できるのでしょうか?
答え1
ルート アカウントにアクセスできる場合は、そこから を使用してユーザーのシェルを変更できますchsh -u user -s $SHELL
。
ブート プロセスにアクセスできる場合は、 を追加しinit=$SHELL
てシングル ユーザー シェルにドロップし、 でこれを修正できますchsh -u user -s $SHELL
(initrd イメージを使用した 2 段階ブートを使用する一部のシステムでは、real_init
代わりに を使用する必要がある場合があります)。 おそらく、 を含むファイル システムを読み取り/書き込み可能として再マウントする必要があります/etc/passwd
(mount -o remount,rw /
または同様のものを使用)。
それ以外の場合、su
別のユーザーからユーザーに入ることができる場合は を試してください。su user -c $SHELL
また、ユーザーに ssh で接続できる場合は のようなものを試してくださいssh user@localhost $SHELL
。
ライブ CD/USB を起動し、マウントし/
て/etc/passwd
手動で修正することもできます。
答え2
私も同じ問題を抱えていますが、この解決策は私にとっては有効です:
- ライブ CD (私は Debían 7.6 を使用) をライブ モードで起動します
- ライブターミナルで、次のコマンドを実行してルートアクセスを取得します。
passwd root
- クラッシュしたディストリビューションのパーティションのディスクをマウントします
- このディスクに移動して、次のコマンドを実行します。
cat etc/shells
- 魚の参照を削除し
nano etc/passwd
、ポイント4の有効なコンソール名を入力します。 - 再起動してお楽しみください。
答え3
ログインしようとすると、次のメッセージが表示されました: /sbin/nologin を実行できません: そのようなファイルまたはディレクトリはありません
これは私がやったことであり、うまくいきました。
- スーパーユーザー権限を持つ別のアカウントでシステムにログインしました
- 次のコマンドを入力します。
sudo chsh -u ユーザー -s $SHELL
ここで、userは問題のあるアカウント名です
- システムからログアウトする
- 問題が発生したアカウント名でログイン
答え4
私もElementary OS Lokiで同じ問題に直面していました。問題を解決するために、次の操作を実行しました。
- まず、zshに関連するものをすべて削除しますsudo apt-get remove zsh && apt-get autoremove
- その後私は編集しました/etc/passwdファイルを確認し、root ユーザーのシェルが定義されていないことがわかったので、シェル /bin/bash を編集しました。これで問題が解決しました。