chcon: falhou ao alterar o contexto de '/etc/oddjobd.conf.d' para 'unconfined_u: object_r: oddjob_t: s0': Permissão negada

1

Um amigo meu teve problemas com o SELinux. O servidor é configurado com o SELinux no modo de imposição, usando a política de destino.

Ao usar Puppet, restorecon ou chcon , ele tinha erros como este, mesmo se o SELinux não estivesse em modo de execução

# chcon -t oddjob_t /etc/tt 
chcon: failed to change context of '/etc/oddjobd.conf.d' to 'unconfined_u:object_r:oddjob_t:s0': Permission denied 

O /var/log/audit/audit.log continha:

type=AVC msg=audit(1429628369.080:338935): avc:  denied  { relabelto } for  pid=3629 comm="chcon" name="oddjobd.conf.d" dev=dm-0 ino=39413 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:oddjob_t:s0 tclass=dir 
type=SYSCALL msg=audit(1429628369.080:338935): arch=c000003e syscall=188 success=no exit=-13 a0=12f20e0 a1=3edf0162d9 a2=12f3620 a3=22 items=0 ppid=1206 pid=3629 auid=2006 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=25771 comm="chcon" exe="/usr/bin/chcon" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null) 

De maneira semelhante, restorecon falhou:

# restorecon -Rv /etc 
restorecon reset /etc/oddjobd.conf.d context system_u:object_r:etc_t:s0->system_u:object_r:oddjob_t:s0 
restorecon set context /etc/oddjobd.conf.d->system_u:object_r:oddjob_t:s0 failed:'Permission denied' 

O /var/log/audit/audit.log continha:

type=AVC msg=audit(1429628361.258:338934): avc:  denied  { relabelto } for  pid=3627 comm="restorecon" name="oddjobd.conf.d" dev=dm-0 ino=39409 scontext=unconfined_u:unconfined_r:setfiles_t:s0-s0:c0.c1023 tcontext=system_u:object_r:oddjob_t:s0 tclass=dir 
type=SYSCALL msg=audit(1429628361.258:338934): arch=c000003e syscall=189 success=no exit=-13 a0=7fdb4b1d5190 a1=7fdb49e762d9 a2=7fdb4b1d50f0 a3=1e items=0 ppid=1206 pid=3627 auid=2006 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=25771 comm="restorecon" exe="/sbin/setfiles" subj=unconfined_u:unconfined_r:setfiles_t:s0-s0:c0.c1023 key=(null)

Ele estava logado como root. O shell bash não foi confinado ( id -Z ).

Então, o que estava errado?

    
por Franklin Piat 22.04.2015 / 23:36

1 resposta

3

Bem, acontece que meu amigo estava apenas tentando usar um tipo de arquivo que é inválido ( oddjob_t é um contexto de processo, não um contexto de arquivo!)

A alteração do tipo de contexto desse diretório para qualquer outro tipo estava funcionando bem (como chcon -t etc_t /etc/oddjobd.conf.d ).

Pode-se usar seinfo para verificar quais tipos de arquivo existem:

# seinfo -afile_type -x | grep "oddjob"
      oddjob_var_run_t 
      oddjob_exec_t 
      oddjob_mkhomedir_exec_t 

A execução de restorecon também falhou porque meu amigo inseriu um contexto de arquivo inválido com:

semanage fcontext --add -t oddjob_t "/etc/oddjobd.conf.d(/.*)?"

Então removi essa regra incorreta (a regra não era necessária):

semanage fcontext --list | grep "oddjob_t"
semanage fcontext -d -t oddjob_t "/etc/oddjobd.conf.d(/.*)?"

P.S. Eu achei este post muito útil para resolver este problema. Blog de Dan Walsh: Tipos de SELinux revisitados.

    
por 22.04.2015 / 23:36

Tags