Quando eu tento isso, recebo uma mensagem de erro que dá uma pista do problema
Sorry, user bob is not allowed to execute '/bin/bash -c /blah/important_script.sh' as root on host.
Observe que estamos sendo negados o acesso a um comando /bin/bash -c...
, que é diferente daquele que especificamos no arquivo sudoers /blah/important_script...
. Quando você diz ao sudo para permitir que um usuário execute um comando específico, ele precisa usar a linha de comando exata, conforme especificado nos sudoers, portanto, precisamos alterar os sudoers apropriadamente.
bob ALL=(root) NOPASSWD: /bin/bash -c /blah/important_script.sh
Isso agora funciona para bob
$ sudo -i /bin/bash -c /blah/important_script.sh
Então por que está fazendo isso? Bem, a man page do sudo tem a resposta
‑i [command] The ‑i (simulate initial login) option runs the shell specified by the password database entry of the target user as a login shell. This means that login-specific resource files such as .profile or .login will be read by the shell. If a command is specified, it is passed to the shell for execution via the shell's ‑c option. If no command is specified, an interactive shell is executed...