При решение одной задумки использования сервиса MajorDoMo на Ubuntu 18.04 я сам создал себе проблему на ровном месте. Дабы не откатывать виртуальную машину на снапшот предустановки через сервис FOG Project принял решение докопаться до момента как ее поправить и впредь не совершать. На основании этого оформил данную проблему как заметка. И так: «Я что-то намудрил и теперь не могу попасть в sudoers»

Шаг №1: Точнее я добавил:

ekzorchik@srv-bionic:~$ sudo nano /etc/sudoers.d/admin
www-data ALL=(ALL) NOPASSWD:ALL

и в /etc/sudoers раскомментировал строчку:

#includedir /etc/sudoers.d

и после не могу попасть в sudoers

ekzorchik@srv-bionic:~$ sudo nano /etc/sudoers
>>> /etc/sudoers: syntax error near line 30 <<<
sudo: parse error in /etc/sudoers near line 30
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

А все потому что по привычке делал через nano, а нужно через sudo visudo /etc/sudoers

Т.к. в момент редактирования, а после сохранения идет проверка на синтаксис, и если что-то не по синтаксису выдается уведомление.

Шаг №2: Смотрю, что такого в 30 строчке файла /etc/sudoers на своей рабочей системе Lenovo E555 on Ubuntu 18.04 Desktop с которой взаимодействую с указанной в «Шаг №1«:

ekzorchik@navy:~$ sudo bash -c "cat /etc/sudoers | awk '(NR==30)'"
#includedir /etc/sudoers.d

Хорошо хоть это на тестовой системе, а не на боевой.

Разбираюсь, как все же выйти из этой ситуации.

Шаг №3: Исправляем ошибки в /etc/sudoers

ekzorchik@srv-bionic:~$ pkexec visudo
Command 'pkexec' not found, but can be installed with:
sudo apt install policykit-1
ekzorchik@srv-bionic:~$

Исправляем ошибки в /etc/sudoers.d/<name>

ekzorchik@srv-bionic:~$ sudo pkexec visudo -f /etc/sudoers.d/<name>

Где <name> — это имя файла, которое можно узнать помня или:

ekzorchik@srv-bionic:~$ ls /etc/sudoers.d/

admin README

ekzorchik@srv-bionic:~$

вот и имя <name> = admin — это у меня.

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

ekzorchik@srv-bionic:~$ sudo apt-get install policykit-1
>>> /etc/sudoers: syntax error near line 30 <<<
sudo: parse error in /etc/sudoers near line 30
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
ekzorchik@srv-bionic:~$

Шаг №4: Отправляю систему в перезагрузку, благо она у меня виртуальная, то есть развернута внутри гипервизора Debian 10 + Proxmox 6 и применяю действия по входу в grub дабы изменить вход, выполнив вход в систему в однопользовательском режиме опираясь на заметку «Чем грозит физический доступ к системе«, но увы у меня не настроено, что отображать меню GRUB, т.к. установка не привычная а предопределенная через файл ответов с применением сервиса FOG Project.

Шаг №5: Так как же быть, а может я смогу примонтировать диск VM в систему и отредактировать файл /etc/sudoers. Подключаюсь к своему полигону на базе Debian 10 + Proxmox.

ekzorchik@navy:~$ nano ~/.bashrc
alias srv-proxmox='sshpass -p 712mbddr@ ssh ekzorchik@172.33.33.25 -p 22'
ekzorchik@navy:~$ source ~/.bashrc
ekzorchik@navy:~$ alias | grep srv-proxmox
alias srv-proxmox='sshpass -p 712mbddr@ ssh ekzorchik@172.33.33.25 -p 22'
ekzorchik@navy:~$ srv-proxmox
ekzorchik@srv-proxmox:~$ sudo qm stop 116
ekzorchik@srv-proxmox:~$ sudo qm config 116
agent: 1
bootdisk: virtio0
cores: 2
ide2: none,media=cdrom
memory: 2048
name: srv-us18045
net0: virtio=B2:63:5A:54:D8:8B,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
parent: OriginalSystem
scsihw: virtio-scsi-pci
smbios1: uuid=fe6245a1-8780-4786-981a-35b8b7e65f69
sockets: 1
virtio0: disk1:vm-116-disk-0,size=50G
vmgenid: 227a62e0-6cdd-470e-97d7-9896799a00af
ekzorchik@srv-proxmox:~$ ls -l /dev/disk1/vm-116-disk-0
lrwxrwxrwx 1 root root 8 Feb 22 23:05 /dev/disk1/vm-116-disk-0 -> ../dm-26
ekzorchik@srv-proxmox:~$ file /dev/disk1/vm-116-disk-0
/dev/disk1/vm-116-disk-0: symbolic link to ../dm-26

Но смонтировать диск не могу, так как disk1 — это диск подключенный в Proxmox 6, как LVM-Thin «Как добавить диск, как LVM-Thin в Proxmox 6 on Debian 10»

Шаг №6: Может попробовать загрузиться с Ubuntu 18.04 Desktop в режиме LiveCD и меняю порядок загрузки, включаю VM: ID 116, выбираю Try Ubuntu, после запускаю Terminal

ubuntu@ubuntu:~$ sudo fdisk -l
Disk /dev/mapper/srv--bionic--vg-root: 49Gb
ubuntu@ubuntu:~$ mkdir disk
ubuntu@ubuntu:~$ sudo mount /dev/mapper/srv--bionic--vg-root disk
ubuntu@ubuntu:~$ sudo bash -c "cat disk/etc/sudoers | awk '(NR==30)'"
includedir /etc/sudoers
ubuntu@ubuntu:~$ sudo nano +30 disk/etc/sudoers
#includedir /etc/sudoers

После не забываю сохранить внесенные изменения.

ubuntu@ubuntu:~$ sudo umount disk

Выключаю систему, возвращаюсь порядок загрузки VM и извлекаю iso образ ubuntu-18.04-2-desktop-amd64.iso, включаю VM

ekzorchik@navy:~$ ssh -l ekzorchik 172.33.33.30

ekzorchik@srv-bionic:~$ sudo visudo

Запускает спокойно и без ошибок, т.е. я убрал свое неправильное изменение.

На будущее теперь в файл ответов буду устанавливать и утилиту policykit-1

ekzorchik@srv-bionic:~$ sudo apt-get install -y policykit-1

Шаг №7: Но как же добавление файла admin с предопределенными правами, как его активировать. Почитал документацию и действительно параметр #include /etc/sudoers.d должен начинаться с символа «#» (решетки) и это не комментарий, а указание что файлы из каталога /etc/sudoers.d/ обрабатываются как же как и сам /etc/sudoers

ekzorchik@srv-bionic:~$ nano admin

www-data ALL=(ALL) NOPASSWD:ALL

ekzorchik@srv-bionic:~$ sudo visudo -c -q -f /home/ekzorchik/admin

ekzorchik@srv-bionic:~$ sudo chmod 600 /home/ekzorchik/admin

ekzorchik@srv-bionic:~$ sudo cp /home/ekzorchik/admin /etc/sudoers.d/admin

ekzorchik@srv-bionic:~$ ls -l /etc/sudoers
-r--r----- 1 root root 755 Feb 22 23:26 /etc/sudoers

Итого я многое для себя прояснил и взял на правило редактировать конфигурационные файлы через

ekzorchik@srv-bionic:~$ sudo visudo

visudo: /etc/sudoers.tmp unchanged - изменения не вносил.

ekzorchik@srv-bionic:~$

Итого я сам себе создал проблему и сам её решил и чуть умнее стал дабы не создавать себе проблемы. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.