Eu posso ver dois métodos:
-
Permita que o usuário use
/sbin/iptables
asudo
sem restrição (que é algo perigoso, isso significa que você confia no usuário de alguma forma) e execute o script com as permissões do usuário. O script invocarásudo
cada vez que/sbin/iptables
for necessário. Isto está assumindo que a execução do script será rápida, uma vez que alguma entrada de senha será necessária em intervalos regulares¹.- Vantagem: você não precisa ter nenhuma confiança no script.
- Desvantagem: como já mencionado, permitir que o usuário use
/sbin/iptables
sem restrição é algo perigoso.
-
Permite que o usuário chame apenas o script através de
sudo
.- Vantagem: o uso de
/sbin/iptables
é restrito pelo script. - Desvantagem: o script deve ser perfeito.
- Vantagem: o uso de
Sobre o problema que você mencionou: se o script pertence a root
e tem permissões usuais: rwxr-xr-x
, outros usuários não podem modificá-lo, só podem executá-lo (eventualmente através de sudo
para obter mais privilégios ).
Com a solução 2 e, no caso de scripts de shell (em comparação com binários / programas mais robustos), tenha cuidado com as variáveis de ambiente e os vários fatores externos que podem modificar a execução do seu script. Verifique se a configuração do sudo redefine corretamente a definição de todas as variáveis potencialmente prejudiciais.
-
1. De fato, sudo
pode ser configurado com NOPASSWD
, se necessário.