Запишите его на CD или DVD. Одноразовые -записываемые, а не стираемые. Или какое-то другое устройство -только для чтения.
Хорошо, я полагаю, вам нужно программное решение, поэтому вот несколько идей. :Возможно, вы могли бы создать набор правил SELinux, отключающий системный вызов (*), который chattr
использует, даже для root. Другой возможностью может быть использование возможностей:для настройки +i
требуется возможность CAP_LINUX_IMMUTABLE
, поэтому, если вы можете упорядочить ограничивающий набор возможностей всех процессов так, чтобы он не включал это, то никто -не может изменить эти возможности. флаги. Но вам потребуется поддержка от init
, чтобы применить это ко всем процессам. Systemd может сделать это , но я думаю, что это нужно делать для каждой службы отдельно.
(*может быть, это был ioctl
.)
Однако, если вы это сделаете, помните, что обычный root может изменить файловую систему с необработанного устройства (вот что debugfs
для ), поэтому вам также нужно предотвратить это. как предотвратить модификацию ядра (загрузки модулей ). Загрузка модулей может быть предотвращена с помощью kernel.modules_disabled
sysctl,но я не уверен в предотвращении доступа к необработанным устройствам. И сделайте все соответствующие файлы конфигурации также неизменяемыми.
В любом случае, после этого вам также необходимо запретить изменение способа загрузки системы, иначе кто-то может перезагрузить систему с ядром, позволяющим обойти вышеуказанные ограничения.