Apache sudoers access

2

Eu estou fazendo uma chamada de sistema do php que é

'sudo /usr/bin/perl -pi -e 's/foo/bar/g' /tmp/newxml.xml';

que funciona bem em php cli. Mas não funcionaria no php via browser, porque o apache não requer permissões de execução. Como eu faço um sudoer do apache para permitir rodar somente / usr / bin / perl?

Eu entendo que terá que editar o / etc / sudoers para fazer isso, mas não tenho certeza de como isso deve ser feito. Quaisquer ponteiros?

Estou executando o RHEL 5.5

    
por user1263746 02.07.2012 / 15:43

3 respostas

5
visudo

adicione

nobody ALL=(ALL)NOPASSWD:/usr/bin/perl

substitua ninguém por qualquer usuário do apache.

Mas você não deveria fazer isso. Dar acesso ao perl do apache sudo essencialmente dá a qualquer um raiz instantânea à sua caixa que comprometa um aplicativo php seu.

Você deve verificar o umask para /tmp/newxml.xml e certificar-se de que é escrito pelo seu usuário do apache.

    
por 02.07.2012 / 15:49
8

Eu não acho que dar aos usuários do sudo apache direitos seria sábio do ponto de vista da segurança. Você já pensou em mudar a propriedade desse arquivo no nível do grupo para que o apache possa escrever nele sem a necessidade de sudo?

    
por 02.07.2012 / 15:47
1

Primeiro, você poderia fazer a mesma coisa de dentro do php sem a necessidade de uma chamada para o perl.

Segundo, como você está executando o rhel, é provavelmente o SELinux que entrou em seu caminho. Tente executar setroubleshooter, ele lhe dará as informações necessárias sobre como corrigir isso.

Terceiro: Não dê raiz ao apache, nem direitos de sudoers ou algo parecido.

    
por 02.07.2012 / 15:54