Com Rails, como sudo ./runner apesar de um pouco de PATH sudo e gem não estar em / usr / bin

2

Meu contexto:

  • ruby-enterprise 1.8.7, em um CentOS 5
  • ruby e gem estão instalados em / usr / local / bin
  • ./ runner: é executado corretamente
  • sudo ./runner

    Rails requires RubyGems >= 1.3.2. Please install RubyGems and try again: http://rubygems.rubyforge.org

    (porque o sudo tem um PATH limitado)

  • sudo PATH = $ PATH ./runner: funciona corretamente, já que o executor tem / usr / local / bin em seu PATH novamente

Pergunta:

Existem outras alternativas (possivelmente mais elegantes - com mudanças mínimas) para lançar o executor com sudo, quando gem não está em / bin ou / usr / bin?

Aqueles em que eu pensaria (mas não satisfeito):

  • colocando um link simbólico para gem em / usr / bin
  • modificando o corredor?
  • modificando sudoers?

Talvez exista um caminho com um arquivo de configuração ou um argumento de linha de comando para o executor?

    
por David142 25.08.2010 / 16:13

1 resposta

2

Você deve poder usar a opção env_file em sudoers e colocar sua especificação de caminho em um arquivo para o qual ela aponta. Algo como:

sudoers :

Cmnd_Alias    RUBY = /path/to/runner
Defaults!RUBY env_file=/path/to/rubypathfile
ALL ALL=(ALL) RUBY

/path/to/rubypathfile :

PATH=/usr/local/bin:/usr/bin:/bin

Você também pode encontrar a opção env_keep útil.

Dê uma olhada no sudo sudo -V | less e veja se ele diz alguma coisa de interesse. Particularmente, faça uma busca que não diferencia maiúsculas de minúsculas por "caminho" ou "rubi".

    
por 25.08.2010 / 17:59