Ещё раз подтверждает, что в sudo надо прописывать неинтерактивные комманды. А если нужный частичный функционал какой-то комманды, то лучше сделать враппер на баше или ещё чем-то.
А для публично доступных аккаунтов лучше давать доступ для записи (домик и прочее) на nosuid файловую систему (совсем для паранои noexec).
P.S. Мне казалось, что проще копировать /bin/bash себе в домик и ставить на него suid бит чем компилить что-то.
Насколько я понимаю подобный подход предоставляют всякие библиотеки типа liborс и liboil. Но их главное приемущество в том что они могут потратить немного времени в рантайме чтобы сгенерировать код для обработки большого потока данных на основании мета информации такой как размер картинки.
watchdog нужен для загрузки через kexec. Т.е. grub вообще не загружается в этом случае. Если загруженная система через kexec детектится как нерабочая (kernel panic или watchdog срабатывае), то происходит обычная перезагрузка и grub загружает обычную систему.
Если всё же хочется через grub, то во второй версии, вроде по умолчанию запоминается последний выбранный пункт (при включенном GRUB_SAVEDEFAULT). Скорее всего, как-то связанно с grub-editenv. Наверное, можно и скрипт написать в нём или уже в initrd.
Но я всегда боюсь трогать grub. И незнаю почему, но с первой версией grub'а я чувствовал себя немного уверенее.
Может можно использовать pivot_root как это делает initrd обычно? Т.е. сделать тоже самое что и initrd только на оборот.
создаём RAM disk (если нет возможности создать раздел на диске)
pivot_root внутрь.
подымаем нужные сервисы явно
гасим все сервисы из старой системы.
отмонтируем старую файловую систему.
делаем что хотим с дисками
Вариант с initrd — кажется более надёжным. Только эксперементировать с загрузкой, наверное, стоит через kexec. И стоит внутри initrd сделать какой-то watchdog который перезагрузит систему назад если в течении какого-то времени никто не зайдёт в неё по ssh. Ну и panic должен быть указан так чтобы в случае такой ситуации система перезагрузилась.
Ещё раз подтверждает, что в
sudoнадо прописывать неинтерактивные комманды. А если нужный частичный функционал какой-то комманды, то лучше сделать враппер на баше или ещё чем-то.А для публично доступных аккаунтов лучше давать доступ для записи (домик и прочее) на
nosuidфайловую систему (совсем для параноиnoexec).P.S. Мне казалось, что проще копировать
/bin/bashсебе в домик и ставить на него suid бит чем компилить что-то.Насколько я понимаю подобный подход предоставляют всякие библиотеки типа liborс и liboil. Но их главное приемущество в том что они могут потратить немного времени в рантайме чтобы сгенерировать код для обработки большого потока данных на основании мета информации такой как размер картинки.
watchdogнужен для загрузки черезkexec. Т.е.grubвообще не загружается в этом случае. Если загруженная система черезkexecдетектится как нерабочая (kernel panic илиwatchdogсрабатывае), то происходит обычная перезагрузка иgrubзагружает обычную систему.Если всё же хочется через
grub, то во второй версии, вроде по умолчанию запоминается последний выбранный пункт (при включенномGRUB_SAVEDEFAULT). Скорее всего, как-то связанно с grub-editenv. Наверное, можно и скрипт написать в нём или уже вinitrd.Но я всегда боюсь трогать
grub. И незнаю почему, но с первой версиейgrub'а я чувствовал себя немного уверенее.Может можно использовать
pivot_rootкак это делает initrd обычно? Т.е. сделать тоже самое что и initrd только на оборот.pivot_rootвнутрь.Вариант с
initrd— кажется более надёжным. Только эксперементировать с загрузкой, наверное, стоит черезkexec. И стоит внутриinitrdсделать какой-то watchdog который перезагрузит систему назад если в течении какого-то времени никто не зайдёт в неё поssh. Ну иpanicдолжен быть указан так чтобы в случае такой ситуации система перезагрузилась.