A solução mais fácil é apenas habilitar seu script em sudoers. Isso não deve introduzir problemas como a substituição do script ... desde que nenhum dos diretórios pai seja gravável para usuários não-root. No entanto, quaisquer erros de segurança em seu script seriam executados como o usuário de destino, o que poderia introduzir algo desagradável.
A solução mais segura é escalar apenas quando necessário usando o sudo dentro do seu script ou então escrever seu script com muito cuidado e obter seu código auditado por alguém familiarizado com suas preocupações de segurança.
Em @o segundo comentário de muru à questão , supôs-se que quanto mais simples fosse a linguagem de script (e o código), menos propenso a ter uma falha de segurança. Eu concordo com isso. Limitá-lo a traço (supondo que você tem traço como / bin / sh ) realmente ajudará nisso. O uso de uma linguagem mais abrangente, como o python, aumenta as possibilidades do que você quer e do que pode dar errado, por isso só sugiro que você se sinta mais à vontade com ele do que com um simples shell script POSIX.
Em última análise, isso depende do que seu código faz. Descobrir seus riscos e quanto esforço seria necessário para controlá-los e, em seguida, pesar uns contra os outros. Quem poderia abusar disso? O Sudo deixa uma trilha de auditoria, então a ameaça de ser demitido ou expulso é suficiente para manter os possíveis agressores na linha?