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".