Назад | Перейти на главную страницу

В чем разница между httpd_read_user_content и httpd_enable_homedirs?

Модуль 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. То есть сфера применения последнего шире, чем у первого.

Как правильно сказал Майкл, мы должны включить только первый, если мы просто хотим поместить корень документа в домашний каталог пользователя.