Configurando o SELINUX para permitir o registro em log de um arquivo que está fora do / var / log

7

Eu tenho um daemon que usa o syslog (3) para registrar em um arquivo que não é um descendente de / var / log. Atualmente, isso requer que o SELINUX seja desativado. Como posso configurar um SELINUX habilitado para permitir esse registro?

Eu sou um novato no SELINUX. Qualquer orientação ou conselho seria apreciado.

    
por Steve Emmerson 13.06.2013 / 18:59

1 resposta

7

Se você olhar o contexto definido para o diretório / var / log, você notará as seguintes coisas.

Primeiro, o diretório /var/log tem o seguinte conjunto de contexto selinux:

$ ls -Z /var | grep "log$"
drwxr-xr-x. root root    system_u:object_r:var_log_t:s0   log

Em segundo lugar, o arquivo de log, /var/log/messages , não tem contexto adicional:

$ ls -Z /var/log/messages
-rw------- root root ?                                /var/log/messages

Portanto, parece que você só precisa definir um contexto semelhante ao de /var/log em qualquer diretório em que você esteja planejando escrever esse arquivo de log adicional. Algo como isso deveria fazer isso.

Método 1: replicando o rótulo selinux

Abaixo, copiaremos o contexto associado a /var/log e também o aplicaremos a /opt/blah .

$ mkdir /opt/blah
$ ls -Z /opt | grep blah
drwxr-xr-x  root root ?                                   blah

# label directory with context
$ chcon --reference /var/log /opt/blah

# see the newly added context
$ ls -Z /opt/ | grep blah
drwxr-xr-x. root root    system_u:object_r:var_log_t:s0   blah

Método 2: aplicando o contexto diretamente

Você também pode aplicá-los diretamente assim:

$ chcon system_u:object_r:var_log_t:s0 /opt/blah

Estou longe de um sistema em que posso confirmar a necessidade de executar esses comandos, mas acredito que você precise dizer ao SELinux para selecionar esses contextos recentemente aplicados ao sistema de arquivos também.

$ semanage fcontext -a -t var_log_t "/opt(/.*)?"
$ restorecon -R -v /opt

confirma as alterações

# confirm identical to /var/log context
$ ls -Z /var/ | grep "log$"
drwxr-xr-x. root root    system_u:object_r:var_log_t:s0   log

Referências

por 13.06.2013 / 21:21