Допустим, я пошел и сделал глупую вещь, такую как использование chsh, чтобы изменить оболочку пользователя root на неверный путь к файлу. Последующие входы в систему с учетной записью root будут внезапно завершены с ошибкой, с указанием / bin / что-либо еще не найдено, и вы вернетесь к экрану входа. За исключением режима восстановления или вставки LiveCD для редактирования / etc / passwd, каковы мои варианты возврата моей системы? Давайте также предположим (для удовольствия?), Что в колесе нет других пользователей. Мысли?
23
Ответы:
При загрузке добавьте
init=/bin/bash
(или путь к любой другой функциональной оболочке) к своим параметрам загрузки - вы попадете прямо в однопользовательскую оболочку. Возможно, вам придется сделать этоmount -o remount,rw /
перед изменением/etc/passwd
записи в этой среде. После этого просто перезагрузите или сделайтеexec /sbin/init 3
. Только не печатайтеexit
и не нажимайте Ctrl + D, так как это приведет к панике ядра *.В некоторых системах, загружаемых в двухэтапном режиме (с образом initrd), может потребоваться еще один вариант этого метода. Если вы заметили, что параметры загрузки содержат
init=
и, что наиболее важно,real_init=
то место для размещения/bin/bash
должно быть последним параметром (т.е.real_init=/bin/bash
).* Это потому, что в этой среде оболочка рассматривается ядром как программа init - единственный процесс, который знает ядро - она представляет работающую систему под глазом ядра. Внезапное завершение этого процесса без указания ядра на выключение системы должно привести к панике ядра. (Не паникуете ли вы, если вдруг все вокруг станет черным и тихим?)
источник
exec
, но я предполагаю , что это лучше не портить слишком много с заранее точки монтирования./etc/passwd
)./
) перед выполнением init./bin/bash
выполняется точно в точке, а затем/sbin/init
будет выполняться при нормальной загрузке. Таким образом, в это время система не может предпринять никаких действий.Вы можете использовать
su
и указать оболочку для выполнения (я не уверен, что если вы пытаетесь наказать, что это невозможно, если вы заметили, что других пользователей нетwheel
):В противном случае вы можете сделать нечто подобное, если ваш демон ssh разрешает вход в систему с правами root:
Вы также можете установить оболочку как ваш init в вашем загрузчике, например,
init=/bin/ksh
или аналогичном.источник
Если ваш загрузчик настроен так, чтобы разрешить оперативное редактирование параметров ядра, решение состоит в том, чтобы перезагрузить компьютер и использовать оболочку в качестве процесса инициализации, например
init=/bin/bash
. Затем смонтируйте все, что нужно, вручную, и отредактируйте/etc/passwd
.sync
и загрузитесь снова со своим обычнымinit
.источник
Если суть вашего вопроса заключается в том, что вы заблокировали все способы стать пользователем root, то по определению вы не можете стать пользователем root.
Обычно в системе Unix разрешено три способа получения прав root:
root
приглашение для входа в систему и введя пароль root. Это запускает оболочку root.su
и введя пароль root. В некоторых системах это требует нахождения в определенной группе (часто называемойwheel
); в других системах любой, кто знает пароль root, может стать пользователем root. Системы, использующие PAM для аутентификации, используютpam_wheel
для управления группой колес, если они есть. Если вы укажете команду с помощьюsu -c
, она будет выполнена через оболочку root.sudo
и введя свой собственный пароль. Учетная запись пользователя должна быть наделена полномочиями sudo администратором. Если не ограничено вsudoers
файле, вы можете запустить любую команду, независимо от оболочки root.Традиционным способом защиты от недоступности оболочки root является определение другой учетной записи с UID 0 и другой оболочки (
toor
это традиционное имя). Например, если оболочка root представляет собой динамически связанный исполняемый файл (хорошая идея для экономии памяти) и обновление библиотеки происходит неправильно, оболочка root может оказаться непригодной для использования. У альтернативной учетной записи root будет статически связанный исполняемый файл, возможно, со встроенными общими утилитами, такими как BusyBox .источник
Приведенные выше ответы великолепны, и я узнал, прочитав их Если вы не помните подробности этих подходов и не возражаете против перезагрузки, вы всегда можете загрузить свою систему, используя дистрибутив live CD, смонтировать раздел /, а затем отредактировать / etc / passwd и перезагрузиться. Не так элегантно, как приведенные выше решения, но легче запомнить.
источник
/etc/passwd
файла. Помимо этого, хороший момент - я просто хотел добавить то же предложение в мой ответ.