Как сбросить пароль Linux, если стандартные методы не работают (SELinux + Read-only)
Стандартные инструкции с YouTube не всегда помогают, особенно когда имеешь дело со сложными конфигурациями. Статей по теме не нашлось, а стандартный вход через init=/bin/sh приводил либо к зависанию системы при попытке загрузки (exec init=/sbin/init), либо к ошибкам в графическом интерфейсе в духе "Извините, но сейчас это невозможно сделать".
Потратив 2 часа на эксперименты, я нашел рабочий алгоритм. Проблема крылась в SELinux и правах доступа, которые блокировали изменение пароля, выдавая ошибку Authentication token manipulation error.
Ниже - пошаговая инструкция для "тяжелых" случаев.
Предыстория: Вы забыли все пароли, включая root
Симптомы проблемы
- Вы сбросили пароль через
passwd, но система выдаетAuthentication token manipulation error. - Файловая система находится в режиме "Только чтение" (Read-only).
- При попытке входа в GUI вы видите ошибку о недоступности входа или пароль не подходит.
Инструкция по восстановлению
Шаг 1. Вход в режим редактирования загрузки
- Перезагрузите компьютер.
- Как только появится меню загрузки GRUB (черный экран со списком систем), быстро нажмите клавишу e (Edit).
- Найдите строку, которая начинается с
linux,linux16илиlinuxefi. В конце этой строки (через пробел) допишите:
init=/bin/sh- Нажмите Ctrl + X (или F10), чтобы загрузиться в консоль.
Шаг 2. Подготовка файловой системы
По умолчанию диск смонтирован в режиме Read-only, поэтому изменения не сохранятся. Исправим это:
mount -o remount,rw /Проверка (должно быть rw в строке вашего диска):
mount | grep rootШаг 3. "Ручной взлом" пользователя
Если команда passwd не работает или выдает ошибки токенов, мы вручную отредактируем файлы конфигурации, чтобы система считала, что пароля у пользователя нет вовсе.
Этап А: Убираем хеш пароля
Откройте файл теней:
nano /etc/shadow(Если nano нет, придется использовать vi).
Найдите строку нужного пользователя (например, cdr или root). Строка выглядит примерно так:cdr:$6$hG7s... (длинный набор символов) ...:18416...
Вам нужно стереть всё, что находится между первым и вторым двоеточием. Должно стать:
cdr::18416...Сохраните файл (Ctrl+O -> Enter) и выйдите (Ctrl+X).
Этап Б: Отключаем проверку "x" (Обязательно для надежности)
Откройте файл пользователей:
nano /etc/passwdНайдите строку пользователя: cdr:x:1000:1000...
Удалите букву x после имени.
Должно стать:
cdr::1000:1000...** Примечание: Если не помните пользователя, делайте это для пользователя root — под ним можно всё.
Сохраните и выйдите. Перезагрузитесь.
Шаг 4. Самый важный шаг (SELinux)
Вы увидите графическую оболочку, но нам нужна текстовая консоль, зайди в неё при помощи Ctrl+Alt+F7 или Ctrl+F7 например.
На большинстве систем:
• GUI - Ctrl+Alt+F1 или Ctrl+Alt+F2
• текстовые консоли - Ctrl+Alt+F3-F6Ctrl+Alt+F7 - это старый Xorg-подход, сейчас не всегда работает.
Именно здесь большинство инструкций терпят неудачу. Поскольку мы редактировали системные файлы (shadow и passwd) вручную через редактор, метки безопасности SELinux сбились. Система думает, что файлы повреждены злоумышленником, и блокирует любые операции с паролями.
Восстановите контекст безопасности командами:
restorecon -v /etc/shadow
restorecon -v /etc/passwdШаг 5. Финальная установка пароля
Теперь препятствий нет. Задайте нормальный пароль прямо сейчас, чтобы войти в графический интерфейс без проблем.
passwd имя_пользователя(Например: passwd cdr)
Введите новый пароль дважды. Вы должны увидеть заветное сообщение:
passwd: all authentication tokens updated successfully
Шаг 6. Перезагрузка
Теперь можно перезагружаться. Введите:
reboot -fПосле загрузки вы сможете войти в систему. Ошибка «Извините, в данный момент это не работает» исчезнет, так как мы восстановили права доступа и корректно обновили токен.
P.S. Существуют и другие методы сброса, например, через Live CD или специализированные утилиты вроде Rescatux или SystemRescue. Они позволяют сбросить пароль в пару кликов, но если под рукой нет флешки с инструментами, а доступ к системе нужен "здесь и сейчас" - метод выше работает безотказно.