SELinux: não é possível executar o script chcon com o contexto cifs_t

1

Continuo recebendo uma mensagem 'Operation not supported' ao tentar atualizar o tipo de contexto de segurança da minha montagem cifs. Estou usando o logrotate para enviar logs do meu servidor para um local de rede, mas o contexto do script que é executado na montagem cifs é 'system_u:object_r:cifs_t:s0'

Aqui estão os flags de montagem da minha pasta cifs:

(rw,relatime,vers=1.0,cache=strict,username=cifsuser,domain=.,uid=1000,forceuid,gid=1000,forcegid,addr=10.1.3.97,file_mode=0755,dir_mode=0755,nounix,rsize=61440,wsize=16580,actimeo=1)

Eu tive meu logrotate em execução a partir de um cron.hourly e toda vez que ele tentava mover arquivos para esta montagem eu iria obter um erro de política de selinux. Eu tentei executar o seguinte para resolver:

sealert -l b9263b3e-d2f9-4b33-ba48-af9b3b7695fd
grep logrotate /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.pp

Mas ainda tenho problemas e isso não me causa mais erros no / var / log / messages. Verificando meus logs /var/log/audit/audit.log Eu vejo isto:

type=SYSCALL msg=audit(1474114505.460:25005): arch=c000003e syscall=21 success=no exit=-13 a0=10f33a0 a1=4 a2=7ffd34025160 a3=7ffd34025080 items=0 ppid=16240 pid=16241 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=2773 comm="sh" exe="/usr/bin/bash" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1474114506.695:25006): avc:  denied  { read } for  pid=16386 comm="sh" name="archive_logs.sh" dev="cifs" ino=60235645016091360 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:cifs_t:s0 tclass=file

Qualquer ajuda seria muito apreciada.

Obrigado

    
por sc2bigjoe 19.09.2016 / 15:30

2 respostas

2

Eu expandi a política, pois é um bug. Instale o RPM selinux-devel , se ainda não estiver presente, e cole esse conteúdo em um arquivo chamado mylogrotate.te .

policy_module(mylogrotate, 1.0.0)

require {
  type logrotate_t;
  type cifs_t;
}

gen_tunable(logrotate_use_cifs, false)

tunable_policy('logrotate_use_cifs','
  fs_read_cifs_files(logrotate_t)
')

Depois disso, faça o seguinte:

$ make -f /usr/share/selinux/devel/Makefile load
$ semanage boolean --modify --off logrotate_use_cifs

Isso deve permitir que a política leia os arquivos cifs.

    
por 30.12.2016 / 23:44
1

Analisando a mensagem de negação do AVC com audit2allow , recebo:

$ echo 'type=SYSCALL msg=audit(1474114505.460:25005): arch=c000003e syscall=21 success=no exit=-13 a0=10f33a0 a1=4 a2=7ffd34025160 a3=7ffd34025080 items=0 ppid=16240 pid=16241 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=2773 comm="sh" exe="/usr/bin/bash" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null) \
        type=AVC msg=audit(1474114506.695:25006): avc:  denied  { read } for  pid=16386 comm="sh" name="archive_logs.sh" dev="cifs" ino=60235645016091360 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:cifs_t:s0 tclass=file' \
| audit2allow

#============= logrotate_t ==============
allow logrotate_t cifs_t:file read;

Meu palpite é que a montagem do CIFS não está rotulada corretamente, pois a política permite que logrotate leia arquivos% rotulados cifs_t , conforme mostrado por sesearch :

$ sesearch -s logrotate_t -t cifs_t -p read --allow -c dir 
Found 1 semantic av rules:
  allow logrotate_t cifs_t : dir { ioctl read getattr lock search open } ;
    
por 30.12.2016 / 22:55