Вопрос или проблема
У меня возникла проблема с установкой 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)
Для восстановления системы без переустановки ОС рекомендую следующий план действий:
-
Создайте резервную копию данных. Перед началом любых операций сделайте резервную копию данных на случай неисправимости файловой системы или выполнения некорректных действий.
-
Используйте SD-карту, подключив её к другому компьютеру. На другом компьютере, где установлена Linux, вставьте SD-карту с Raspberry Pi и смонтируйте её файловую систему.
Пример монтирования:
sudo mount /dev/sdX1 /mnt/pi-root
Где
/dev/sdX1
замещается на нужный идентификатор раздела вашей карты. -
Измените права на файл
sudoers
. Восстановите правильные разрешения:sudo chmod 440 /mnt/pi-root/etc/sudoers
-
Безопасно отмонтируйте файловую систему:
sudo umount /mnt/pi-root
-
Проверьте и скорректируйте, если потребуется, права доступа к другим важным файлам. Например, файл
/etc/sudoers.d
должен иметь разрешение 755.
После выполнения этих действий, вставьте SD-карту обратно в Raspberry Pi и загрузите систему. Команда sudo
должна работать корректно, и вы сможете продолжить использование устройства без переустановки системы.
Это эффективный метод решения проблемы, который не требует переустановки ОС и минимизирует риск потери данных.