Como executar (alguns) comandos CGI como root

2

Eu quero colocar um script CGI simples no meu servidor APACHE. Eu gostaria de escrever possivelmente em C (mas também em PERL, se eu quiser).

O problema é que ele deve conter algumas linhas que podem ser executadas apenas pela raiz ( iptables , por exemplo), enquanto webuser é o usuário que está executando o servidor.

Como posso tornar essas linhas executáveis pela raiz?

    
por JustTrying 02.01.2013 / 17:02

2 respostas

4

Uma solução pode ser escrever um script wrapper para os comandos relevantes, strongmente proteger este script e permitir um sudo sem senha para isso.

Editar: Um script de wrapper é apenas um pequeno script de shell no qual você descarrega os comandos críticos. Você pode proteger isso (por exemplo, tornar aceessible apenas o usuário Apache).

Para o sudo, há muitas perguntas no Serverfault e em outros lugares, e também há uma página man: man sudo e man sudoers .

Se você tiver dificuldades com isso depois de ler os documentos disponíveis, ainda poderá fazer uma pergunta específica sobre o seu problema.

    
por 02.01.2013 / 17:12
0

Você pode usar setuid no script. Um executável com setuid é executado como o proprietário de qualquer usuário normal. ( /bin/ping por exemplo.)

Seja muito , muito cuidado com isso. Certifique-se de que o script não pode ser substituído por código malicioso, etc.

man setuid

    
por 02.01.2013 / 17:47