web-dev-qa-db-ja.com

Ubuntu:rootユーザーを誤って存在しないシェルに変更しました

ユーザーのシェルを変更しようとしましたが、「Sudo chsh」を使用し、ルートシェルを「/ bin/bash」ではなく「bash」に変更しました。これを変更しようとすると、「chsh:PAM認証に失敗しました」というメッセージが表示され、他のものも機能していないようです。

~$ Sudo su
Cannot execute bash: No such file or directory

これはリカバリモードでも発生します。使用可能なものに変更するにはどうすればよいですか?

8
endolith

通常のユーザーを使用してログインできる場合は、rootユーザーのシェルを直接変更するだけです。

Sudo gedit /etc/passwd

Rootユーザーの行(通常は最初の行)を見つけて、最後の部分をから変更します。

...:bash

...:/bin/bash

そして、あなたは行ってもいいはずです。

(注:geditを好きなエディターに置き換えてください。)

16

Ubuntuインストールディスクを使用してライブセッションを起動します。

ルート( '/')パーティションをハードディスクにマウントします(書き込み可能であることを確認してください)。

'[HDマウントポイント]/etc/passwd'(例:/ media/sda1/etc/passwd)を編集します。

ルートを最初の行にする必要があります。行の最後のエントリとなるログインシェルを修正するだけです。

ハードディスクをアンマウントします。 CDを取り出します。リブート

6
JRT

私は何年も前にこれで遊んだ:

cd /bin ; Sudo su

何が起こっているのかというと、前に/がない場合、シェルは相対パスとして解釈されます。/binにいると、正しく解決されます。

あなたが本当に行き詰まったら;レスキューCDは長い道のりです。ブートオプションinit =/bin/shは、ルートシェルをすぐに提供します。カーソルはプロンプトなしで点滅しますが、ルートシェルがあります。行う

set -i
# mount / -o remmount,rw
# vi /etc/passwd
<fix it>
# mount / -o remount,ro
# reboot -f
2
Joshua

短期的な回避策として、suコマンドの「-s」スイッチを使用してシェルを指定できることに注意してください。例えば:

su -s /bin/bash

/ bin/bashシェルでsuセッションを開始します。 Sudo su -s/bin/bash(または任意のシェル)@BjarkeFreundにも同じことが言えます-Hansenの答えは永続的な修正です。

1
apocalysque