Ubuntu: случайно изменил пользователя root на несуществующую оболочку

3868
endolith

Я попытался изменить оболочку моего пользователя, но использовал «sudo chsh» и изменил корневую оболочку на «bash» вместо «/ bin / bash». Теперь, когда я пытаюсь изменить это, я получаю «chsh: PAM аутентификация не удалась», и кажется, что другие вещи тоже не работают.

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

Это происходит и в режиме восстановления. Что я делаю, чтобы изменить это на что-то полезное?

7

4 ответа на вопрос

15
Bjarke Freund-Hansen

Если вы можете войти под своим обычным пользователем, просто измените оболочку root-пользователей напрямую:

sudo gedit /etc/passwd 

Найдите строку для своего пользователя root, обычно первую, и измените последнюю часть с

...:bash 

в

...:/bin/bash 

И тебе должно быть хорошо идти.

(NB: Замените gedit любым редактором, который вам нравится.)

Это сработало. Спасибо! endolith 14 лет назад 1
6
JRT

Используйте установочный диск Ubuntu для загрузки живого сеанса.

Смонтируйте корневой раздел ('/') на жесткий диск (убедитесь, что он доступен для записи).

отредактируйте '[точку монтирования HD] / etc / passwd' (например, / media / sda1 / etc / passwd),

root должен быть первой строкой, просто исправьте оболочку входа в систему, которая будет последней записью в строке.

Размонтировать жесткий диск. Удалить CD. перезагружать

Это «если вы не можете войти как обычный пользователь» Broam 14 лет назад 3
2
Joshua

Я играл с этим однажды давным-давно:

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
apocalysque

Обратите внимание, что в качестве краткосрочного обходного пути вы можете использовать ключ "-s" в команде su, чтобы указать оболочку. Например:

su -s /bin/bash 

начал бы сеанс su с оболочкой / bin / bash. То же самое касается sudo su -s / bin / bash (или любой другой оболочки, которую вы хотите) @Bjarke Freund-Hansen - это постоянное исправление.

Похожие вопросы