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

8

Модуль apache в SELinux имеет два похожих логических параметра: httpd_read_user_contentи httpd_enable_homedirs.

Страница руководства говорит, что первая позволяет httpd читать пользовательский контент, а вторая позволяет httpd читать домашние каталоги .

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

Какой параметр мне следует установить в значение true, если я хочу разрешить httpd читать файлы в /home/fooкаталоге?

Цутому
источник

Ответы:

10

httpd_read_user_contentпозволяет любому ограниченному веб-серверу читать файлы в домашних каталогах пользователей в /home.

httpd_enable_homedirsпозволяет Apache использовать свою UserDirдирективу (т.е. URL-адреса, которые выглядят как http://www.example.com/~username/).

Если вы просто сопоставляете доменные имена с пользовательскими каталогами, этого должно быть достаточно для включения первого httpd_read_user_content, но если вы хотите использовать пользовательские каталоги Apache, вам следует включить оба.

Майкл Хэмптон
источник
2

Проведя некоторые исследования самостоятельно, я исследовал различия между ними с помощью sesearchкоманды:

$ sesearch --allow -s httpd_t -b httpd_read_user_content
Найдено 5 семантических правил:
   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 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
Найдено 15 семантических правил:
   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 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. То есть сфера охвата последнего шире, чем первого.

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

Цутому
источник