Как восстановиться после случайного chmod 777 на /etc/sudoers

Вопрос или проблема

У меня возникла проблема с установкой retropie на Raspberry Pi, где я случайно заблокировал команду sudo.

Я собираюсь просто создать новый образ для своей Raspberry Pi и начать сначала, если только кто-то не поможет мне выйти из этой ситуации. Проблема в том, что я случайно изменил права на /etc/sudoers на 777, и теперь ВСЕ попытки использовать команду sudo завершаются ошибкой:

sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found. quitting
sudo: unable to initialize policy plugin

Я читал где-то, что можно исправить это, используя pkexec 775 /etc/sudoers, но проблема в том, что root пользователь на retropie по умолчанию отключен, а pkexec работает только от имени root пользователя.

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

Вам не нужно использовать root пользователя, используйте пользователя pi.

Поскольку /etc/sudoers принадлежит root, вам понадобится sudo для исправления этого.

На “обычной” системе вы могли бы это исправить, загрузившись с установочного диска, монтируя / (на флешке) как /mnt, и выполняя chmod 440 /mnt/etc/sudoers (как sudo).

Возможно, стоит попробовать это на внешней системе (будьте очень осторожны) для Raspberry Pi, только для практики. Очевидно, что быстрее было бы записать новую флешку.

Ответ или решение

В сложившейся ситуации, где вы случайно изменили разрешения файла /etc/sudoers на 777, в результате чего команда sudo стала недоступной, необходимо предпринять несколько шагов для восстановления нормальной работы системы.

Теория (Theory)

Файл /etc/sudoers является критическим для управления правами пользователей в операционной системе Linux. Он должен иметь строгие разрешения: 440, чтобы предотвратить несанкционированные изменения и злоупотребления. При установке разрешений 777, файл становится доступным для изменений всеми пользователями, что представляет серьёзный риск для безопасности и приводит к отказу sudo в работе, так как система распознает это как потенциальную угрозу.

Пример (Example)

На обычных системах, для восстановления правильных разрешений, можно загрузиться с внешнего установочного диска или Live CD, смонтировать корневую файловую систему и изменить разрешения файла на 440. Однако в случае Raspberry Pi с установленной Retropie и отключенным пользователем root, этот подход становится неосуществимым, так как доступ к sudo и pkexec ограничен.

Применение (Application)

Для восстановления системы без переустановки ОС рекомендую следующий план действий:

  1. Создайте резервную копию данных. Перед началом любых операций сделайте резервную копию данных на случай неисправимости файловой системы или выполнения некорректных действий.

  2. Используйте SD-карту, подключив её к другому компьютеру. На другом компьютере, где установлена Linux, вставьте SD-карту с Raspberry Pi и смонтируйте её файловую систему.

    Пример монтирования:

    sudo mount /dev/sdX1 /mnt/pi-root

    Где /dev/sdX1 замещается на нужный идентификатор раздела вашей карты.

  3. Измените права на файл sudoers. Восстановите правильные разрешения:

    sudo chmod 440 /mnt/pi-root/etc/sudoers
  4. Безопасно отмонтируйте файловую систему:

    sudo umount /mnt/pi-root
  5. Проверьте и скорректируйте, если потребуется, права доступа к другим важным файлам. Например, файл /etc/sudoers.d должен иметь разрешение 755.

После выполнения этих действий, вставьте SD-карту обратно в Raspberry Pi и загрузите систему. Команда sudo должна работать корректно, и вы сможете продолжить использование устройства без переустановки системы.

Это эффективный метод решения проблемы, который не требует переустановки ОС и минимизирует риск потери данных.

Оцените материал
Добавить комментарий

Капча загружается...