Seguindo o princípio do menor privilégio, corra o mínimo que puder como root. Portanto, sudo de dentro do script.
Observe que na primeira vez que há um comando que precisa do sudo, você pode ser solicitado. (Isso não será verdade se você usar o NOPASSWD em / etc / sudoers, que é uma técnica que muitas pessoas evitarão como insegura.) No entanto, quando você executar o sudo e fornecer uma senha, o sudo se lembrará do sucesso de um período de tempo. Por padrão, esse período de tempo é de cinco minutos. Então, se você executou "sudo echo hi", digitou sua senha e depois executou o script, o script não seria sudo. Mais realisticamente, se você simplesmente executar o script, você provavelmente será solicitado a sudo uma vez ... presumindo que o script leva menos que dar minutos para concluir as tarefas restantes.
Eu não posso me preocupar com alguns comandos echo
, mas se houver conteúdo significativo que pode ser feito sem permissões extras, então, por segurança, geralmente gosto de maximizar o quanto é feito com o mínimo de elevação.
Como exemplo de como minimizar permissões, deixe-me mostrar outro cenário de amostra. Em vez de: sudo -c "sample-command >> /var/log/output.txt"
Eu gosto de usar:
sample-command | sudo tee -a /var/log/output.txt >> /dev/null
Ao fazer isso, o comando inteiro é executado sem o sudo, e a única parte que acaba tendo permissões aprimoradas é a parte que precisa de permissões aprimoradas, que é a parte que grava no arquivo.
Claramente, meu objetivo aqui é minimizar o quanto é feito elevado. Da mesma forma, se todo o seu script não requer elevação, a abordagem preferida (de uma perspectiva de segurança) é minimizar o quanto é feito elevado.