web-dev-qa-db-ja.com

シェルを変更し、rootアカウントにsshログインできません

コマンドusermod -s /bin/fish rootを使用してrootユーザーのシェルを変更しましたが、rootアカウントにログインできません。なんでこんなことが起こっているの?

Windows上のPuTTYを介してUbuntuを実行しているサーバーにSSHで接続しようとしています。許可拒否エラーを取得しています。

1
moesef

まず最初に、まだ別のシェルを介してログインしている場合:ログアウトしないでください
(これが、ログアウトする前に常にテストする理由です)。

次に、別のユーザーを介してログオンできますか?
他のユーザーが(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に攻撃して修正する必要があります。

3
Hennes

シェルがインストールされていない場合、シェルをロードできなかったため、ログイン後すぐにロックアウトされます。

Sudoを使用せずにLinuxを実行している場合は、grub/liloのカーネルに有効なシェルを渡すことができます。お気に入り:

init=/bin/sh 
2
Tim Haegele