Uma solução rápida seria alterar o arquivo de log para ser /var/log/openvpn-status.log
, pois o processo openvpn está sendo executado como openvpn_t
e tem permissão dentro da política para gravar em arquivos com o nome var_log_t
(como / var / log deve ser).
O contexto padrão para /var/log/openvpn
é openvpn_var_log_t
matchpathcon /var/log/openvpn
/var/log/openvpn system_u:object_r:openvpn_var_log_t:s0
Um processo mais longo que requer um pouco mais de gerenciamento é permitir que openvpn_t
grave em openvpn_var_log_t
, que é o contexto que / var / log / openvpn obtém, por exemplo,
echo "host kernel: type=1400 audit(1384344598.334:39761): avc: denied { read write } for pid=5777 comm="openvpn" name="openvpn" dev=dm-0 ino=54527865 scontext=unconfined_u:system_r:openvpn_t:s0 tcontext=unconfined_u:object_r:openvpn_var_log_t:s0 tclass=dir" | audit2allow -M localOpenVpn
que irá gerar um arquivo .pp que você pode instalar
semodule -i localOpenVpn.pp
Não se esqueça de armazenar o localOpenVpn.te e o localOpenVpn.pp em algum lugar seguro.
Para Jiri Xichtkniha
Se você olhar para o arquivo .te gerado, entre outras coisas, diz
#============= openvpn_t ==============
#!!!! The source type 'openvpn_t' can write to a 'dir' of the following types:
# net_conf_t, pcscd_var_run_t, openvpn_etc_t, openvpn_tmp_t, openvpn_var_run_t,
tmp_t, etc_t, var_run_t, var_log_t, krb5_host_rcache_t, tmp_t, cluster_var_lib_t,
cluster_var_run_t, root_t, cluster_conf_t
Observe que openvpn_var_log_t
não está listado.