Eu pessoalmente não fiz nenhuma suposição sobre sudo
, assim como colocar sudo
em um script é uma má ideia. Sua quarta sugestão (verifique se o script é executado como root) é melhor, IMHO. Só que prefiro verificar o ID de usuário efetivo em vez de seu nome:
[ -n "$EUID" ] && [ $EUID -eq 0 ] || <not root, exit>
Isso deixará a escolha do usuário, com a qual a ferramenta superusuário pode executar seu script.