snv + http 协议与 SElinux

snv + http 协议与 SElinux

我被要求在 CentOS 7 操作系统上使用 http 和 svn 协议运行 subversion。安装了 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 位于同一文件夹?。但经过更多阅读后,我选择了CentOS 维基百科并创建了自定义 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 钩子)

问题是:这是正确的做法吗?创建一个新标签并为其制定自定义策略会更好吗?或者使用 SELinux 布尔值是更好的方法吗?

相关内容