Було на вході:
1) віртуальна машина з centos8 під openstack
2) нема пароля root
3) був доступ через sudo, але поламався через доданий недавно неправильний sudo-файл (так, так, треба користуватися visudo
)
4) доступ до grub є, але обмежений через веб-сторінку
Жодні поради з інету, як відновити root не спрацювали (як варіант, можна було б використати вразливість polkit, але машина робоча - можна було отримати по шиї
).
Спроба init=/bin/bash не спрацьовувала, бо веб-сторінка, хоч і мала консоль, не вміла це робити на такій ранній стадії.
Рішення: написати програму на rust, що пересуває поламаний файл в /tmp, покласти прогу десь в на основній файловій системі, і дати шлях до неї в grub як init=...
Цікаво, що перший варіант програми, написаний на go не спрацював - замість посунути файл, ядро запанікувало.