Модуль apache SELinux имеет два похожих логических параметра: httpd_read_user_content
и httpd_enable_homedirs
.
На странице руководства говорится, что первая позволяет httpd читать пользовательский контент а последний позволяет httpd читать домашние каталоги.
В чем разница между ними?
Какой параметр мне следует установить, если я хочу разрешить httpd читать файлы на /home/foo
каталог?
httpd_read_user_content
позволяет любому ограниченному веб-серверу читать файлы в домашних каталогах пользователей в /home
.
httpd_enable_homedirs
позволяет Apache использовать свои UserDir
директива (т.е. URL-адреса, которые выглядят как http://www.example.com/~username/
).
Если вы просто сопоставляете доменные имена с каталогами пользователей, этого должно быть достаточно, чтобы включить первое, httpd_read_user_content
, но если вы хотите использовать пользовательские каталоги Apache, вы должны включить оба.
Проведя небольшое исследование, я исследовал различия между ними, используя sesearch
команда:
$ sesearch --allow -s httpd_t -b httpd_read_user_content Found 5 semantic av rules: allow httpd_t user_home_dir_t : dir { ioctl read getattr lock search open } ; allow httpd_t user_home_t : file { ioctl read getattr lock open } ; allow httpd_t user_home_t : dir { ioctl read getattr lock search open } ; allow httpd_t home_root_t : dir { getattr search open } ; allow httpd_t home_root_t : lnk_file { read getattr } ; $ sesearch --allow -s httpd_t -b httpd_enable_homedirs Found 15 semantic av rules: allow httpd_t user_home_dir_t : dir { ioctl read getattr lock search open } ; allow httpd_t user_home_dir_t : lnk_file { read getattr } ; allow httpd_t autofs_t : dir { ioctl read getattr lock search open } ; allow httpd_t cifs_t : file { ioctl read getattr lock open } ; allow httpd_t cifs_t : dir { ioctl read getattr lock search open } ; allow httpd_t cifs_t : lnk_file { read getattr } ; allow httpd_t nfs_t : file { ioctl read getattr lock open } ; allow httpd_t nfs_t : dir { ioctl read getattr lock search open } ; allow httpd_t nfs_t : lnk_file { read getattr } ; allow httpd_t user_home_t : file { ioctl read getattr lock open } ; allow httpd_t user_home_t : dir { ioctl read getattr lock search open } ; allow httpd_t user_home_type : dir { getattr search open } ; allow httpd_t user_home_type : lnk_file { read getattr } ; allow httpd_t home_root_t : dir { ioctl read getattr lock search open } ; allow httpd_t home_root_t : lnk_file { read getattr } ;
Все правила http_read_user_content
включены в httpd_t -b httpd_enable_homedirs
. То есть сфера применения последнего шире, чем у первого.
Как правильно сказал Майкл, мы должны включить только первый, если мы просто хотим поместить корень документа в домашний каталог пользователя.