Обратите внимание, что ошибка Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.
отличается от ошибки %s is not in the sudoers file
. (Я не читал исходный код, я просто запустил strings
в коде в /usr/lib/sudo/*
.)
Следовательно, вы все еще можете находиться в файле sudoers. Может кто перенастроил. Попробуйте разные команды, возможно, вы найдете что-то, что вам поможет. Если нет, то вам нужно смонтировать диск в другом экземпляре ОС и исправить это.
редактировать
Я понял, что screen
доступен в среде установщика для Debian (он недоступен в Ubuntu ). Поэтому вы можете использовать предварительную настройку, аналогичную этому фрагменту.
d-i preseed/early_command string \
screen -dmS reboot /sbin/reboot -d 60
оригинальный пост
Покопавшись в этом, я думаю, что для того, чтобы делать именно то, что вы хотите, вам нужно написать демона, который правильно создает фон и выполняет /sbin/reboot
. Вы можете использовать early_command
для загрузки и запуска скомпилированного демона.
Я начал с тестирования следующего фрагмента preseed. Он работает так, как вы хотите в Ubuntu 20.04, но не работает в Debian Buster (, как вы видели ).
d-i preseed/early_command string \
/sbin/reboot -d 60 &
Тестирование в оболочке в обоих установщиках показало, что log-output
является причиной того, что Debian ведет себя по-разному.
Я обнаружил, что log-output.c
был исправлен для обработки «в случае, если вспомогательный процесс запускает демон, который не полностью отключает свои стандартные файловые дескрипторы». В то время как Ubuntu все еще имеет этот патч, Debian отменил его из-за вызванной им ошибки.
Среда установщика очень минимальна. Он не имеет nohup
, screen
или start-stop-daemon
доступных в качестве альтернативных способов фонового процесса. Поэтому я думаю, вам понадобится исполняемый файл, который может правильно работать в фоновом режиме и запускать нужные вам команды.
Ссылки