コマンドusermod -s /bin/fish root
を使用してrootユーザーのシェルを変更しましたが、rootアカウントにログインできません。なんでこんなことが起こっているの?
Windows上のPuTTYを介してUbuntuを実行しているサーバーにSSHで接続しようとしています。許可拒否エラーを取得しています。
まず最初に、まだ別のシェルを介してログインしている場合:ログアウトしないでください。
(これが、ログアウトする前に常にテストする理由です)。
次に、別のユーザーを介してログオンできますか?
他のユーザーが(uid 0)を持っているか、それを使用して/ bin/fishがインストールされているだけでなく、/ etc/shells(許可されているシェルのリスト)にも存在するかどうかを確認します。そうでない場合は、追加して再試行してください。
そのユーザーがsuまたはSudoの使用を許可されている場合は、Sudo /usr/local/bin/bash
のようなものを試してください。
それがすべて失敗した場合は、他の方法でログインする必要があります。 Timのinit=/bin/sh
は、サーバーに物理的にアクセスできる人々のための従来のソリューションです。 (デルのHP ILOまたはDRACは、物理アクセスの代わりにもなります)。
LILOブートローダーからは、これはinit=/bin/sh
で実行され、ログイン後にmount -o remount,rw /
が続きます(それ以外の場合/は読み取り専用であるため、修正が困難になります)。 grubから、カーネルパラメータを編集できるオプションを選択します。カーネルパラメータの最後に1
(実行モード1、別名シングルユーザー)または「single」を追加します。
これらのいずれにも当てはまらない場合は、ディスクを物理的に取り外して、フルアクセス権のあるOSに攻撃して修正する必要があります。
シェルがインストールされていない場合、シェルをロードできなかったため、ログイン後すぐにロックアウトされます。
Sudoを使用せずにLinuxを実行している場合は、grub/liloのカーネルに有効なシェルを渡すことができます。お気に入り:
init=/bin/sh