EACCES isso não deveria acontecer

2

Eu tenho uma situação em uma máquina Linux que não consigo explicar.

Algumas informações: Estamos executando o apache com um módulo c / c ++ que encaminha solicitações para nosso aplicativo. Ele faz isso lendo um arquivo .port que especifica uma porta local para enviar as solicitações.

Após a instalação, não é possível conectar-se usando a interface da web. Depois de um pouco de solução de problemas, mostro strace e vejo que os processos do apache não conseguem ler o arquivo .port:

[pid  8105] stat("/tmp/somedir/application.port", 0x7ffff9694470) = -1 EACCES (Permission denied)

Eu verifico as permissões no arquivo:

% ls -l /tmp/somedir/application.port
-rw-r--r--. 1 appuser staff    5 Oct 16 14:10 application.port

Então, qualquer um deveria ser capaz de ler isso, certo?

Verifico quem o processo do apache é executado como:

% ps -ef | grep 8105
appuser   8105  3357  0 15:14 ?        00:00:00 /usr/sbin/httpd

Assim, o processo do apache é executado como o proprietário do arquivo. Isso deve funcionar também, né?

Finalmente, eu faço:

% su - appuser
% stat /tmp/somedir/application.port
  File: '/tmp/somedir/application.port'
  Size: 5           Blocks: 8          IO Block: 4096   regular file
Device: 11h/17d Inode: 1400293     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1001/ appuser)   Gid: ( 1001/   staff)
Access: 2013-10-16 14:10:03.357679902 +0200
Modify: 2013-10-16 14:10:03.357679902 +0200
Change: 2013-10-16 14:10:03.357679902 +0200

Então, o "appuser" possui o arquivo, executa o servidor web, mas não tem permissão para fazer stat () nele a partir do processo do servidor web? Alguém tem uma ideia sobre o que poderia estar acontecendo aqui?

Também devo mencionar que esta não é a primeira instalação que fizemos e que as outras funcionam como esperado. Pode ter havido algum toque manual durante a instalação desta máquina em particular, mas ainda não vejo como podemos acabar assim.

Reiniciando processos também não faz nada para mudar o comportamento.

A máquina é uma caixa RHEL 6.

    
por Mattias Nilsson 17.10.2013 / 08:38

1 resposta

2

No final, descobriu-se que o problema era de fato relacionado ao SELinux.

Para qualquer pessoa que precise entender rapidamente o que é o SELinux e alguns comandos úteis, recomendo o SELinux para meros mortais vídeo do youtube. É uma ótima introdução para começar a solução de problemas.

    
por 23.10.2013 / 09:45