sudo -i executa seu shell, não o comando. Ele passa o comando para o shell.
Para garantir que a variável de ambiente PATH adequada seja configurada, estou usando as opções sudo -i , mas estou descobrindo que o arquivo sudoers não está sendo respeitado.
Aqui está minha configuração:
/etc/sudoers :
Defaults env_reset
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
user ALL=(ALL) ALL
user ALL=NOPASSWD: /usr/local/bin/chef-solo
A execução de sudo chef-solo -v não solicita uma senha. A execução de sudo -i chef-solo -v solicitará uma senha.
Para o sudo -i funcionar sem uma senha, a regra que usa o alias ALL como o comando a ser executado precisa do sinalizador NOPASSWD.
No meu local de trabalho atual, a política proíbe que isso seja usado para qualquer comando que possa ser executado como raiz (incluindo su). Em vez disso, usamos o NOPASSWD em conjunto com o usuário run-as não raiz para alternar as contas sem usar su, como na regra a seguir:
% group ALL = (usuário) NOPASSWD: TODOS
Isso permite o uso de "sudo -iu user" e "sudo -u user command and args".