Como posso executar scripts de shell do Linux que precisam de privilégios de root de uma página da Web?

2

Estou tentando executar um script de shell linux que requer privilégios de root via Apache. Existe alguma maneira de executar scripts que precisam de privilégios de root, em vez de configurar o privilégio suid e sudo para o Apache.

Estou tentando editar arquivos como os painéis de controle, por exemplo, no Plesk, o "sw-cp-server" pode editar arquivos raiz.

    
por Augustin 02.01.2015 / 19:36

3 respostas

1

O problema com isso é que, independentemente de como você o divide, se um usuário sem privilégios puder escrever no arquivo de script, você está deixando uma porta aberta para permitir que o usuário faça qualquer coisa, pois nesse caso / ele pode modificar o script. No entanto, não há necessidade de fazer isso, pois ele pode ter raiz e definir 0700, se quiser.

rather than setting suid and sudo privilege to Apache

Você não precisa configurar o suid em nada, e você pode usar o sudo para que o apache só possa executar esse script. Se o apache for executado como usuário httpd , adicione a /etc/sudoers :

httpd ALL = NOPASSWD: /foo/bar/scripts/foobar.sh

Substitua o caminho real do script ali. A chamada terá então que usar sudo /foo/bar/scripts/foobar.sh . Mas essa é a única coisa que o usuário httpd poderá fazer dessa maneira.

Veja man 5 sudoers para mais detalhes.

    
por 02.01.2015 / 22:06
0

A única maneira de executar scripts que exigiriam privilégios de root através do Apache seria dar ao Apache o conjunto necessário de privilégios para fazer as modificações necessárias.

Outra opção (e essa é uma solução alternativa) seria fazer com que o Apache grave em um arquivo e um daemon seja executado no servidor para verificar os arquivos que o Apache gravou e executar ações com base no que foi gravado no arquivo por Apache.

    
por 02.01.2015 / 19:42
0

Se você não quiser executar o Apache com privilégios de root (e você não deve), então você pode escrever um pequeno programa de wrapper para o script que você dá permissões SUID ( chmod 4755 ) e tem root proprietário. Esse programa wrapper pode então chamar o script, que será executado com as permissões corretas. Nenhum outro script será assim "elevado", mas é claro que você precisa tomar cuidado para que o conteúdo do script não possa ser alterado de qualquer maneira.

    
por 02.01.2015 / 20:04