chcon falha ao corrigir “não é possível ativar a pilha executável como o objeto compartilhado requer” err sob RHEL6

1

Eu tenho um aplicativo que testo no trabalho, que sempre falhou na instalação em sistemas com o SELinux ativado. Nossa solução alternativa publicada envolve a emissão de um comando chcon para o arquivo de biblioteca no centro da falha.

chcon -t textrel_shlib_t /usr/lib/ourfile.so.1.0.20

No RHEL5, isso funcionou para nós e permite que o aplicativo funcione corretamente, sem precisar desativar completamente o SELinux.

Em RHEL6, o comando chcon não fornece erros, mas ainda vemos o mesmo erro, quando nosso aplicativo é iniciado como um daemon, via /etc/init.d/ourapp

Minha principal preocupação é descobrir uma solução alternativa atualizada (a biblioteca de aplicativos em questão é submetida a um processo de certificação externo e não pode ser alterada por mais 6 meses), mas também estou curioso se isso indicar uma alteração intencional de RHEL5 para RHEL6.

    
por Don Simon 24.09.2012 / 22:18

1 resposta

1

As perguntas frequentes não oficiais do SELinux contribuem com esta alternativa .

Isso é causado por uma extensão para o Linux chamada Exec-Shield . Impede que programas executem código na pilha, mitigando ataques de esmagamento de pilha .

A maioria das bibliotecas compartilhadas não precisa de uma pilha executável, portanto você deve marcar a biblioteca como não precisando de uma pilha executável via:

execstack -c /usr/lib/ourfile.so.1.0.20

Depois de usar o execstack , teste o programa para garantir que ele ainda seja executado. Se você tem algum código ruim lá que realmente tenta executar o código na pilha, ele irá falhar.

    
por 25.09.2012 / 00:10

Tags