httpd_read_user_content和httpd_enable_homedirs有什么区别?


8

SELinux的apache模块具有两个类似的布尔参数:httpd_read_user_contenthttpd_enable_homedirs

手册页说,前者允许httpd读取用户内容,而后者允许httpd读取主目录

它们之间有什么区别?

如果要允许httpd读取/home/foo目录中的文件,应将哪个参数设置为true ?

Answers:


10

httpd_read_user_content允许任何受限的Web服务器读取的用户主目录中的文件/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条语义av规则:
   允许httpd_t user_home_dir_t:dir {ioctl读取getattr锁定搜索打开}; 
   允许httpd_t user_home_t:文件{ioctl读取getattr锁打开}; 
   允许httpd_t user_home_t:dir {ioctl读取getattr锁定搜索打开}; 
   允许httpd_t home_root_t:dir {getattr search open}; 
   允许httpd_t home_root_t:lnk_file {读getattr};
$ sesearch --allow -s httpd_t -b httpd_enable_homedirs
找到了15条语义av规则:
   允许httpd_t user_home_dir_t:dir {ioctl读取getattr锁定搜索打开}; 
   允许httpd_t user_home_dir_t:lnk_file {读取getattr}; 
   允许httpd_t autofs_t:dir {ioctl读取getattr锁搜索打开}; 
   允许httpd_t cifs_t:文件{ioctl读取getattr锁打开}; 
   允许httpd_t cifs_t:dir {ioctl读取getattr锁搜索打开}; 
   允许httpd_t cifs_t:lnk_file {read getattr}; 
   允许httpd_t nfs_t:文件{ioctl读取getattr锁打开}; 
   允许httpd_t nfs_t:dir {ioctl读取getattr锁搜索打开}; 
   允许httpd_t nfs_t:lnk_file {读getattr}; 
   允许httpd_t user_home_t:文件{ioctl读取getattr锁打开}; 
   允许httpd_t user_home_t:dir {ioctl读取getattr锁定搜索打开}; 
   允许httpd_t user_home_type:dir {getattr search open}; 
   允许httpd_t user_home_type:lnk_file {读取getattr}; 
   允许httpd_t home_root_t:dir {ioctl读取getattr锁搜索打开}; 
   允许httpd_t home_root_t:lnk_file {读getattr}; 

的所有规则http_read_user_content都包含在中httpd_t -b httpd_enable_homedirs。即,后者的范围比前者的范围宽。

正如Michael正确地说的,如果我们只想将文档根目录放在用户的主目录中,则应该仅启用第一个。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.