Я ошибочно вошел
chsh -s /usr/bin
вместо того
chsh -s /bin/bash
и теперь я не могу войти в корневую оболочку, как мне вручную запустить оболочку bash от имени root?
sudo vipw
работу?
Я ошибочно вошел
chsh -s /usr/bin
вместо того
chsh -s /bin/bash
и теперь я не могу войти в корневую оболочку, как мне вручную запустить оболочку bash от имени root?
sudo vipw
работу?
Ответы:
Хотя root не имеет доступа, пользователь в группе sudo все еще может запускать привилегированные команды - похоже, ошибка не в sudo, а в другом месте sudo chsh
команды (например, ошибка chsh).
Таким образом, ваш sudo, очевидно, работает.
Файл passwd можно редактировать с помощью:
sudo vipw
И корневая оболочка изменилась вручную.
( /etc/passwd
обычно первая строка )
root:x:0:0:root:/root:/bin/bash
Команды vipw и vigr редактируют файлы / etc / passwd и / etc / group соответственно. С флагом -s они будут редактировать теневые версии этих файлов, / etc / shadow и / etc / gshadow соответственно. Программы установят соответствующие блокировки, чтобы предотвратить повреждение файла.
vipw
и vigr
, спасибо! Я всегда использовалsudo vim /etc/passwd
visudo
sudo.ws/man/1.8.15/visudo.man.html , @tac
sudo -e
это выполняет функцию блокировки-редактирования для любого редактирования.
Другой вариант, если у вас есть доступ к другой учетной записи, состоит в том, чтобы вручную переопределить оболочку по умолчанию, используя su --shell=/bin/bash
:
-s, --shell = SHELL
запустить SHELL, если / etc / shells это позволяет
Основным преимуществом этого является то, что он требует только доступа к другой учетной записи, а не к другой привилегированной .
По соображениям безопасности, логины ли текстовые или графические и утилиты , как su
и sudo
что позволяет запускать команды , как другой пользователь все запускать эти команды через оболочку целевого пользователя. Если оболочка целевого пользователя не работает, ну, вы видели результаты :-(
Если у вас не работает работающая корневая оболочка, работающая где-либо, или что-то вроде двоичного файла setuid-root или что-то, что позволяет вам обойти это, перезагрузка и исправление проблемы с помощью спасательной системы или живого образа, вероятно, будет лучшим выбором.
Загрузите спасательную систему, смонтируйте, скажем, корневую файловую систему вашей реальной системы /mnt/foo
, и отредактируйте ее, /mnt/foo/etc/passwd
чтобы исправить оболочку. Сохранить, размонтировать, и все готово.
/etc/passwd
не открытый текст? Я не видел этого, по крайней мере, лет через десять. Это все еще вещь в некоторых системах? Во всяком случае, я полагаю, chroot /mnt/foo chsh -s /bin/bash
может быть в этом случае?
Добавьте init=/bin/bash
в командную строку ядра (при загрузке с помощью grub нажмите, e
чтобы отредактировать загрузочную запись), и у вас будет оболочка bash, работающая от имени пользователя root, даже без ввода пароля. Вероятно, ваша корневая файловая система все еще будет монтироваться только для чтения, поэтому сначала вам нужно перемонтировать ее, а затем снова сменить оболочку chsh
.
sudo usermod -s /bin/bash jdoe
изменит оболочку jdoe на bash
. Вы можете тогда sudo egrep jdoe /etc/passwd
проверить.