При решение одной задумки использования сервиса 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.