我被要求在CentOS 7操作系统上使用http和svn协议运行颠覆。 安装了Apache和Subversion。 当apache和subversion访问版本库时,会出现这个问题。 Apache使用设置:
#ls -Z drwxr-xr-x apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 repository
但在这种情况下,svnserve无法访问它。 Svnserve在设置#chcon -R -t svnserve_content_t /var/www/repository 。 但在这种情况下,http协议(apache)被SELinux阻止。
我在这里发现了类似的问题: 如何让SELinux在同一个文件夹上允许Apache和Samba? 。 但是在阅读更多内容之后,我select了CentOS wiki中描述的程序,并创build了一个自定义的SELinux策略。
该政策如下所示:
module my_svnserve 1.0; require { type proc_t; type passwd_file_t; type httpd_sys_rw_content_t; type shell_exec_t; type random_device_t; type svnserve_t; type http_port_t; type bin_t; class capability { fsetid dac_override }; class tcp_socket name_connect; class chr_file getattr; class dir { search read create write getattr rmdir remove_name open add_name }; class file { rename read lock execute_no_trans ioctl unlink open append execute setattr create write getattr }; } #============= svnserve_t ============== allow svnserve_t bin_t:file { execute execute_no_trans }; allow svnserve_t http_port_t:tcp_socket name_connect; allow svnserve_t httpd_sys_rw_content_t:dir { search read create write getattr rmdir remove_name open add_name }; allow svnserve_t httpd_sys_rw_content_t:file { rename execute setattr read lock create getattr execute_no_trans write ioctl unlink open append }; allow svnserve_t passwd_file_t:file getattr; allow svnserve_t passwd_file_t:file { read open }; allow svnserve_t proc_t:file getattr; allow svnserve_t proc_t:file { read open }; allow svnserve_t random_device_t:chr_file getattr; allow svnserve_t self:capability { fsetid dac_override }; allow svnserve_t shell_exec_t:file execute_no_trans; allow svnserve_t shell_exec_t:file execute;
(它也考虑到连接到JIRA的svn钩子)
问题是:这是正确的做法吗? 创build一个新的标签并制定自定义策略会更好吗? 还是用SELinux布尔器更好的方法?