В настоящее время я настраиваю эталонную политику для встраиваемого устройства (Linux 4.19, ptxdist) и столкнулся с проблемой, которая указывает на то, что я не понял части того, как работает маркировка новых файлов.Насколько я понял механизм, новые файлы наследуют тип своего родительского каталога, если не определен переход типа.Но, очевидно, я что-то упускаю:
root@mybox:/etc ls -lZd /etc
drwxr-xr-x 10 root root system_u:object_r:etc_t:s0 0 Jan 5 11:53 /etc
root@mybox:/etc > /etc/foo
root@mybox:/etc ls -lZd /etc/foo
-rw-r--r-- 1 root root system_u:object_r:root_t:s0 0 Jan 5 12:37 /etc/foo
/ etc помечен типом etc_t, но недавно созданный файл / etc / foo получает тип root_t.Поэтому я ожидаю, что будет определен соответствующий переход типа, но, похоже, его нет:
root@mybox:/etc sesearch -T | grep root_t
type_transition sysadm_t home_root_t:dir user_home_dir_t;
type_transition sysadm_t root_t:file etc_runtime_t;
type_transition unconfined_t root_t:file etc_runtime_t;
Я предполагаю, что тот факт, что / etc находится в rootfs, связан, в частности, с оператором genfscon
.в политике:
root@mybox:/etc seinfo --genfscon | grep rootfs
genfscon rootfs / system_u:object_r:root_t:s0
Это хорошо соответствует контексту / etc / foo.Описание genfscon
в wiki selinuxproject.org звучит так, как будто все в соответствующей файловой системе получит указанный контекст безопасности.Однако restorecon
и chcon
, кажется, могут назначать произвольные контексты (и согласно mount
rootfs монтируется с опцией seclabel
).
Кто-нибудь может подробно рассказать о том, как все работает?И как, если это вообще возможно, указать тип перехода для файла в / etc - поскольку целевой тип, использующий ни etc_t, ни root_t, не работает?