в каком контексте ты это сделал. В текущем терминале для пользователей оболочка по умолчанию?
jgr208
у вас нет пользователей в группе sudo?
Руи Ф Рибейро
3
делает sudo vipwработу?
Руи Ф Рибейру
1
@RuiFRibeiro да, это было спасибо, я не знал, что могу изменить корневую оболочку по умолчанию в этом файле
ChiseledAbs
1
В этом случае нет необходимости, но когда вы непреднамеренно создали катастрофу с участием пользователя root, вы обычно можете перевести машину в однопользовательский режим, исправить проблему и затем вернуться в многопользовательский режим.
Бордрайдер
Ответы:
29
Хотя root не имеет доступа, пользователь в группе sudo все еще может запускать привилегированные команды - похоже, ошибка не в sudo, а в другом месте sudo chshкоманды (например, ошибка chsh).
Команды vipw и vigr редактируют файлы / etc / passwd и / etc / group соответственно. С флагом -s они будут редактировать теневые версии этих файлов, / etc / shadow и / etc / gshadow соответственно. Программы установят соответствующие блокировки, чтобы предотвратить повреждение файла.
Или sudo -eэто выполняет функцию блокировки-редактирования для любого редактирования.
Кодзиро
16
Другой вариант, если у вас есть доступ к другой учетной записи, состоит в том, чтобы вручную переопределить оболочку по умолчанию, используя su --shell=/bin/bash:
-s, --shell = SHELL
запустить SHELL, если / etc / shells это позволяет
Основным преимуществом этого является то, что он требует только доступа к другой учетной записи, а не к другой привилегированной .
По соображениям безопасности, логины ли текстовые или графические и утилиты , как suи sudoчто позволяет запускать команды , как другой пользователь все запускать эти команды через оболочку целевого пользователя. Если оболочка целевого пользователя не работает, ну, вы видели результаты :-(
Если у вас не работает работающая корневая оболочка, работающая где-либо, или что-то вроде двоичного файла setuid-root или что-то, что позволяет вам обойти это, перезагрузка и исправление проблемы с помощью спасательной системы или живого образа, вероятно, будет лучшим выбором.
Загрузите спасательную систему, смонтируйте, скажем, корневую файловую систему вашей реальной системы /mnt/foo, и отредактируйте ее, /mnt/foo/etc/passwdчтобы исправить оболочку. Сохранить, размонтировать, и все готово.
Любопытно, что произойдет, если вы сделаете это и файл / etc / passwd будет в хеш-коде вместо простого текста?
jgr208
1
/etc/passwdне открытый текст? Я не видел этого, по крайней мере, лет через десять. Это все еще вещь в некоторых системах? Во всяком случае, я полагаю, chroot /mnt/foo chsh -s /bin/bashможет быть в этом случае?
Селада
У меня никогда не было описанной проблемы, однако я работаю с заблокированными системами, которые должны иметь / etc / passwd не в виде простого текста, чтобы избежать хакеров и тому подобного, что еще больше скомпрометирует систему, если они получат доступ. Хм, это может сработать, скажем так, я надеюсь, мне никогда не придется пытаться понять, работает ли это на самом деле.
jgr208
Мне удалось отредактировать / etc / passwd с помощью sudo из учетной записи пользователя, я не знал, что оболочка была определена в этом файле, спасибо
ChiseledAbs
@ChiseledAbs о, ты был? Молодец, рад, что ты решил свою проблему. Я не думал, что это позволит вам.
Селада
6
Добавьте init=/bin/bashв командную строку ядра (при загрузке с помощью grub нажмите, eчтобы отредактировать загрузочную запись), и у вас будет оболочка bash, работающая от имени пользователя root, даже без ввода пароля. Вероятно, ваша корневая файловая система все еще будет монтироваться только для чтения, поэтому сначала вам нужно перемонтировать ее, а затем снова сменить оболочку chsh.
sudo vipw
работу?Ответы:
Хотя root не имеет доступа, пользователь в группе sudo все еще может запускать привилегированные команды - похоже, ошибка не в sudo, а в другом месте
sudo chsh
команды (например, ошибка chsh).Таким образом, ваш sudo, очевидно, работает.
Файл passwd можно редактировать с помощью:
И корневая оболочка изменилась вручную.
(
/etc/passwd
обычно первая строка )Fom man vipw
источник
vipw
иvigr
, спасибо! Я всегда использовалsudo vim /etc/passwd
visudo
sudo.ws/man/1.8.15/visudo.man.html , @tacsudo -e
это выполняет функцию блокировки-редактирования для любого редактирования.Другой вариант, если у вас есть доступ к другой учетной записи, состоит в том, чтобы вручную переопределить оболочку по умолчанию, используя
su --shell=/bin/bash
:Основным преимуществом этого является то, что он требует только доступа к другой учетной записи, а не к другой привилегированной .
источник
По соображениям безопасности, логины ли текстовые или графические и утилиты , как
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
проверить.источник