Ответы:
Да, это можно сделать.
SELinux - это система маркировки, и доступ для выполнения различных операций над файлами (но также и над пользователями, процессами, ...) предоставляется на основе контекста безопасности инициирующего процесса.
Опорная политика определяет контекст безопасности процесса:
# ps -defZ | grep httpd
system_u:system_r:httpd_t:s0 root 1085 1 0 21:22 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
В этом примере контекст безопасности имеет следующие элементы:
system_u
: пользователь SELinux system_r
: роль SELinux httpd_t
: атрибут принудительного применения типа SELinux s0
: диапазон MLS / MCS, релевантный в политиках, отличных от целевых по умолчанию. А также определяет, к каким контекстам безопасности процесс может иметь доступ:
# ll -dZ /srv/www/html/
drwxr-s---. root apache system_u:object_r:httpd_sys_content_t:s0 /srv/www/html/
# sesearch -s httpd_t -t httpd_sys_content_t -c file -p read -Ad
Found 1 semantic av rules:
allow httpd_t httpd_sys_content_t : file { ioctl read getattr lock open } ;
В приведенном выше примере, учитывая контекст безопасности каталога /srv/www/html
Вы можете найти с помощью sesearch(1)
если это определено в политике, что процесс помечен httpd_t
может иметь доступ на чтение к каталогу с меткой httpd_sys_content_t
,
Проверьте страницу руководства sesearch
для большего количества вариантов.
Таким образом, чтобы разветвленный процесс был ограничен доступом к файлам, открытым его родителем, вы должны убедиться, что существует политика, разрешающая эту операцию.