Provavelmente, é um bug na política do SELinux em relação a semanage
binary (que possui seu próprio contexto semanage_t
) e /tmp
directory, que também tem seu próprio contexto - tmp_t
.
Consegui reproduzir quase os mesmos resultados no meu CentOS 5.6.
# file /tmp/users.txt /tmp/users.txt: ERROR: cannot open '/tmp/users.txt' (No such file or directory) # semanage login -l > /tmp/users.txt # file /tmp/users.txt /tmp/users.txt: empty # semanage login -l >> /tmp/users.txt # file /tmp/users.txt /tmp/users.txt: empty
Quando tentei usar o arquivo em um diretório diferente, obtive resultados normais
# file /root/users.txt /root/users.txt: ERROR: cannot open '/root/users.txt' (No such file or directory) # semanage login -l > /root/users.txt # file /root/users.txt /root/users.txt: ASCII text
Diferença entre /tmp
e /root
é o contexto deles
# ls -Zd /root/ drwxr-x--- root root root:object_r:user_home_dir_t /root/ # ls -Zd /tmp/ drwxrwxrwt root root system_u:object_r:tmp_t /tmp/
E, finalmente, depois de tentar redirecionar para o arquivo em /tmp
, recebi os seguintes erros em /var/log/audit/audit.log
type=AVC msg=audit(1310971817.808:163242): avc: denied { write } for pid=10782 comm="semanage" path="/tmp/users.txt" dev=dm -0 ino=37093377 scontext=user_u:system_r:semanage_t:s0 tcontext=user_u:object_r:tmp_t:s0 tclass=file type=AVC msg=audit(1310971838.888:163255): avc: denied { append } for pid=11372 comm="semanage" path="/tmp/users.txt" dev=d m-0 ino=37093377 scontext=user_u:system_r:semanage_t:s0 tcontext=user_u:object_r:tmp_t:s0 tclass=file
Nota interessante: redirecionar semanage
output para pipe funciona OK
#semanage login -l | tee /tmp/users.txt > /tmp/users1.txt # file /tmp/users.txt /tmp/users.txt: ASCII text # file /tmp/users1.txt /tmp/users1.txt: ASCII text