Como defino a variável PATH para um serviço que está sendo executado como um usuário não-login?

2

Estou executando um servidor GitLab em uma máquina Linux usando o Nginx como um servidor da Web. Vários processos (iniciados manualmente como raiz com /etc/init.d/foo start ou automaticamente como subprocessos) são executados como usuários diferentes:

  • nginx como www-user
  • postgres como postgres
  • redis-server como redis
  • unicorn-rails e sidekiq como git

O user git é configurado como no-login, geralmente estou usando sudo -u git -H foo para fazer as coisas como user git. O usuário instalou um executável (node.js) em um caminho local. Para usá-lo, eu preciso mudar meu sudo para %código%. Eu também o adicionei ao arquivo .bashrc do user git, mas suponho que ele nunca seja executado, pois o login do shell é proibido.

Como estou tendo problemas com o servidor GitLab, suspeito que o serviço não tenha a variável PATH configurada corretamente e não consiga encontrar node.js no caminho local.

Minha pergunta: Como faço para definir variáveis de ambiente como PATH para usuários que não são de login, para que os serviços executados como esse usuário (iniciado pelo root com sudo -u git -H env "PATH=/home/git/local/bin/:$PATH" foo ou na inicialização) tenham acesso a ele?

Pergunta sobre bônus: Qual processo / usuário precisaria acessar o mecanismo Javascript? Nginx / www-user? Ou Rails (Unicorn) / git?

    
por Chaos_99 08.11.2014 / 10:18

0 respostas