Resumindo : como fazer o sudo para não liberar PATH toda vez?
Eu tenho alguns sites implantados no meu servidor (teste Debian) escritos com Ruby on Rails. Eu uso o Mongrel + Nginx para hospedá-los, mas há um problema que ocorre quando preciso reiniciar o Mongrel (por exemplo, depois de fazer algumas alterações).
Todos os sites são verificados no VCS (git, mas não é importante) e têm o proprietário e o grupo definidos para o meu usuário, enquanto o Mongrel é executado sob o usuário, huh, mongrel severamente restrito em seus direitos. Portanto, o Mongrel deve ser iniciado como root (ele pode alterar automaticamente o UID) ou mongrel.
Para gerenciar o mongrel, eu uso o mongrel_cluster gem porque permite iniciar ou parar qualquer quantidade de servidores Mongrel com apenas um comando. Mas ele precisa que o diretório /var/lib/gems/1.8/bin esteja no PATH: isso não é suficiente para iniciá-lo com o caminho absoluto .
A modificação de PATH no .bashrc raiz não mudou nada, os ajustes env_reset e env_keep do sudo também não.
Então a pergunta: como adicionar um diretório ao PATH ou manter o PATH do usuário no sudo?
Atualização: alguns exemplos
$ env | grep PATH
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/var/lib/gems/1.8/bin
$ sudo cat /etc/sudoers | egrep -v '^$|^#'
Defaults env_keep = "PATH"
root ALL=(ALL) ALL
%sudo ALL=NOPASSWD: ALL
$ sudo env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Também posso dizer que funciona exatamente dessa maneira no Debian stable (lenny) também.