Файл Sudoers испорчен

Файл Sudoers испорчен

Я случайно допустил ошибку в sudoersфайле, и теперь не могу ее исправить, потому что если я попытаюсь изменить файл, он выдаст сообщение об отказе в доступе. Если я использую , sudoчтобы открыть файл, то он говорит об ошибке синтаксиса и не sudoersнайдены допустимые источники, и не выполняет команду. Я использую raspbian, разновидность Debian.

Кто-нибудь знает, как выбраться из этой ловушки?

решение1

  1. Если вы знаете rootпароль (и он установлен), вы можете использовать suего для rootредактирования /etc/sudoers.
  2. Если ваша корневая файловая система находится на SD-карте, вы можете выгрузить ее и редактировать /etc/sudoersна ПК или любом другом устройстве, при условии, что оно оснащено устройством для чтения карт.
  3. Вы можете войти в командную строку U-Boot (загрузчика) (обычно нажатием кнопки на клавиатуре или через UART) и добавить 1в командную строку ядра Linux для входа в однопользовательский режим. В этом режиме вы будете rootи сможете редактировать /etc/sudoers. Смотрите такжеэтот.

решение2

Вам придется загрузиться в однопользовательском режиме.

https://serverfault.com/questions/482079/debian-boot-to-single-user-mode

Как пользователь root, вы сможете отредактировать файл sudoers, чтобы исправить это. Я настоятельно рекомендую использовать команду visudoдля редактирования файла sudoers в будущем, чтобы избежать необходимости проходить через это снова, так как visudo проверяет синтаксис файла перед его сохранением.

решение3

Если вы используете облачный экземпляр, то у вас немного больше проблем.

Существуют методы, зависящие от дистрибутива, но если у вас уже установлен и запущен Docker, то вы, как правило, можете использовать контейнер Docker, чтобы исправить проблему. Это связано с тем, что, как правило, служба Docker работает как root, и все, что делается с смонтированным томом внутри контейнера, влияет на хост как root.

На хосте:

docker run --rm -ti -v /etc:/usr/local/etc busybox sh

"Busybox" — это просто небольшой приятный дистрибутив, загрузка которого не займет много времени. Если у вас уже есть образ Docker, в котором есть оболочка, просто используйте его.

В Docker-контейнере:

cd /usr/local/etc
vi sudoers

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

Когда вы выйдете из контейнера, вы sudoснова сможете.

Ух ты!

Связанный контент