Это относится к моему Raspberry Pi, на котором у меня установлен Raspbmc. Я понимаю, что есть сайт Raspberry Pi StackExchange, но я подумал, что я мог бы больше взглянуть на эту проблему здесь.

Проблема в том, что я изменил /etc/sudoers в попытке предоставить разрешения NOPASSWD одному из пользователей, но я предполагаю, что где-то по пути я запустил файл, и теперь я получаю следующую ошибку при каждом входе в систему / попытке использовать sudo:

sudo: parse error in /etc/sudoers near line 19
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

Я нашел похожие посты как в Ubuntu, так и в StackOverflow, но проблема в том, что для всех ответов требуется пароль root, а учетная запись root отключена по умолчанию в Raspbmc, и я, очевидно, не включал его до попытки изменить /etc/sudoers .

Итак, мой вопрос: как мне исправить файл, если у меня не включен root-доступ? Это вообще возможно?

3 ответа3

6

Вы по-прежнему сможете загружать Pi в однопользовательском режиме, чтобы получить доступ к root.

Используя другой компьютер, измените cmdline.txt и добавьте single в конец строки
Затем, когда вы загружаете Pi с SD-карты, он автоматически выводит вас в приглашение root, которое позволяет вам обновить /etc/sudoers

0

Самое простое решение - это загрузить другую ОС на LiveDVD или LiveUSB (в идеале LiveUSB, а в идеале на ОС Linux), затем смонтировать диск и вручную изменить файл. Я делал подобные вещи раньше и исправлял это таким образом. Все ваши файлы будут видны и доступны для редактирования из системы Live. Если вы не зашифровали диск; это делает вещи немного сложнее.

Дайте мне знать, если у вас есть вопросы, и я отредактирую этот ответ - я не уверен, насколько вам удобно с настройкой живого USB, но это не очень сложно.

0

После двух дней исследований и просмотра веб-страниц я, наконец, нашел решение и смог сохранить свою собственную систему Raspberry Pi (без необходимости переформатировать SD-карту и начинать с нуля)!

ПРИМЕЧАНИЕ. Этот ответ довольно длинный. Если вы хотите быстро найти реальное решение, я добавил заголовок, к которому вы можете прокрутить вниз. Тем не менее, я рекомендую прочитать весь ответ, так как он может дать некоторое представление о различиях между дистрибутивом Raspbian и другими дистрибутивами Linux, а также понять, почему многие из предлагаемых решений, которые вы найдете в Интернете, могут не работать на вашем Pi ,

Обычно в среде Linux самый быстрый способ восстановить поврежденный sudo без перезагрузки - это использовать PolicyKit или команду pkexec например, например:

pkexec visudo

Но на Pi он, скорее всего, не будет работать, он будет запрашивать пароль root, но пароль не принимается. (Я имею в виду, вы даже помните установку пароля root? Подожди, а ты? Затем перейдите к звездочке *.)

Некоторые дистрибутивы Linux, например Ubuntu, поставляются с режимом восстановления, доступ к которому можно получить, удерживая нажатой клавишу Shift во время загрузки, и предлагает удобный интерфейс и позволяет перетащить его в приглашение корневой оболочки, где можно получить доступ к исправить сломанные файлы. Дистрибутив Pi Raspbian Linux не имеет такого режима восстановления, поэтому решение не является для нас решением. Тем не менее, Pi при загрузке предлагает вам удерживать нажатой клавишу Shift, чтобы войти в какой-то режим восстановления, и, войдя в режим восстановления Pi или в диалоговое окно NOOBS, мы, безусловно, находимся на правильном пути восстановления поврежденного sudo на нашем Pi.

Другим распространенным способом восстановления sudo является загрузка в однопользовательском режиме, которая приводит вас к приглашению корневой оболочки. Это можно сделать, добавив слово single в конец cmdline.txt в загрузочном разделе системы. В следующий раз, когда ваша система загрузится, она загрузится в однопользовательском режиме.

Мы можем легко попробовать это решение на нашем Pi, потому что, удобно, режим восстановления Pi или диалог NOOBS позволяет нам редактировать cmdline.txt . В режиме восстановления или в диалоговом окне NOOBS, нажав кнопку "Редактировать конфигурацию", вы открываете редактор, который позволяет редактировать два файла, одним из которых является cmdline.txt . При нажатии "ОК" в редакторе ваши изменения сохраняются.

К сожалению, когда вы загружаетесь в однопользовательский режим или "режим восстановления" на Pi, вы, скорее всего, получите следующее сообщение:

Cannot open access to console, the root account is locked.
See sulogin(8) man page for more details.

Press Enter to continue.

Это так же, как и то, почему ранее упомянутое приглашение корневого пароля не принимало никаких паролей, заключается в том, что Raspbian по умолчанию не имеет пароля, установленного для учетной записи root. Это не должно быть перепутано с паролем, который является ничем или что пароль не требовался бы. Raspbian, как и несколько других дистрибутивов Linux (например, Debian, производный Raspbian), ожидает, что пользователь будет работать как root с помощью sudo, а не через саму учетную запись. Следовательно, корневая учетная запись находится в состоянии "блокировки", которое мы испытываем.

* Если вы устанавливаете пароль пользователя root, например, с помощью команды sudo passwd root , то вы сможете использовать команду pkexec -com и загрузиться в однопользовательском режиме. Обратите внимание, что когда вы делаете это, вам нужно использовать sudo, так что, очевидно, это не решение проблемы, когда sudo нарушено, но я указываю на это, потому что, возможно, именно поэтому некоторые люди добились успеха в исправлении своих Pi при применении решений, предлагающих pkexec -командный или однопользовательский режим. Эти люди в какой-то момент ушли и вручную установили пароль root, разблокировав корневую учетную запись своей системы.

Решение

В этом блоге объясняется, как делать то, что нам нужно. Шаги практически идентичны шагам, которые мы предприняли при попытке восстановить sudo в однопользовательском режиме. Вам не нужно делать все громоздкие вещи, о которых упоминается в блоге, чтобы редактировать cmdline.txt , вместо этого просто делайте это в диалоговом окне NOOBS. Ключ заключается в добавлении init=/bin/sh в конец cmdline.txt . После добавления этого фрагмента при следующей загрузке Pi вы попадете в приглашение командной оболочки root.

Первоначально файловая система будет загружена в режиме только для чтения, поэтому, прежде чем иметь возможность что-либо редактировать, вам придется перемонтировать корневой раздел в режиме чтения и записи, выполнив следующую команду:

mount -o remount,rw /dev/mmcblk0p2 /

Теперь вы должны быть в приглашении root-оболочки, где вы можете свободно редактировать любой файл, включая испорченные файлы sudo.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .