Infelizmente, não há esse "sinalizador". O mais próximo seria um boolean
e, de acordo com a página de manual zabbix_selinux(8)
, não há boolean
definido para conceder acesso de leitura a um arquivo de log em um local arbitrário.
Você não fornece detalhes sobre a rotulagem real dos arquivos no diretório /var/log/snmptt/
. A rotulagem esperada pode ou não corresponder ao rótulo esperado de outros arquivos de log relacionados ao SNMP, conforme semanage()
:
# semanage fcontext -l | grep '/var/log/snmp'
/var/log/snmpd\.log.* regular file system_u:object_r:snmpd_log_t:s0
A solução, então, seria conceder zabbix
acesso de leitura a esses arquivos de log. Filtrar seu log de auditoria usando audit2allow(1)
:
# echo "
> time->Wed Apr 30 09:58:11 2014
> type=SYSCALL msg=audit(1398869891.560:41198): arch=c000003e syscall=2 success=no exit=-13 a0=16ffee0 a1=0 a2=1 a3=8 items=0 ppid=23309 pid=23329 auid=4294967295 uid=995 gid=996 euid=995 suid=995 fsuid=995 egid=996 sgid=996 fsgid=996 ses=4294967295 tty=(none) comm="zabbix_proxy" exe="/usr/sbin/zabbix_proxy_sqlite3" subj=system_u:system_r:zabbix_t:s0 key=(null)
> type=AVC msg=audit(1398869891.560:41198): avc: denied { read } for pid=23329 comm="zabbix_proxy" name="snmptt.log" dev="dm-5" ino=133641 scontext=system_u:system_r:zabbix_t:s0 tcontext=system_u:object_r:var_log_t:s0 tclass=file
> ----
> time->Wed Apr 30 09:58:12 2014
> type=SYSCALL msg=audit(1398869892.560:41199): arch=c000003e syscall=2 success=no exit=-13 a0=16ffee0 a1=0 a2=1 a3=8 items=0 ppid=23309 pid=23329 auid=4294967295 uid=995 gid=996 euid=995 suid=995 fsuid=995 egid=996 sgid=996 fsgid=996 ses=4294967295 tty=(none) comm="zabbix_proxy" exe="/usr/sbin/zabbix_proxy_sqlite3" subj=system_u:system_r:zabbix_t:s0 key=(null)
> type=AVC msg=audit(1398869892.560:41199): avc: denied { read } for pid=23329 comm="zabbix_proxy" name="snmptt.log" dev="dm-5" ino=133641 scontext=system_u:system_r:zabbix_t:s0 tcontext=system_u:object_r:var_log_t:s0 tclass=file
> " | audit2allow
#============= zabbix_t ==============
allow zabbix_t var_log_t:file read;
O procedimento para criar um módulo personalizado é detalhado na página audit2allow(1)
.
Você normalmente criaria um módulo, instalaria ou atualizaria, testaria o comportamento de seu aplicativo sob as novas restrições de segurança e refinaria ainda mais o módulo. Isso é feito facilmente colocando sua máquina no modo permissive
enquanto você testa / desenvolve um novo módulo. Use setenforce(8)
para fazer isso.