snv + protocolos http com o SElinux

1

Me pediram para executar o subversion com protocolos http e svn no CentOS 7 os. Apache e subversão instalados. O problema surge quando o apache e o subversion são para acessar o repositório. O Apache trabalha com configurações:

#ls -Z
drwxr-xr-x apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 repository

Mas neste caso o svnserve não pode acessá-lo. O Svnserve funciona depois de definir #chcon -R -t svnserve_content_t /var/www/repository . Mas neste caso o protocolo http (apache) é bloqueado pelo SELinux.

Encontrei problema semelhante aqui: Como obtenho o SELinux para permitir o Apache e o Samba na mesma pasta? . Mas depois de mais leituras escolhi o procedimento descrito no wiki do CentOS e criei uma política personalizada do SELinux.

A política parece:

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;

(também considera svn hooks que se conectam ao JIRA)

A questão é: esta é a coisa certa a fazer? Seria melhor criar um novo rótulo e criar uma política personalizada para ele? Ou está usando o SELinux booleans melhor maneira?

    
por tremoor 25.02.2016 / 11:59

0 respostas