Configurando o PATH para que se aplique a todos os usuários, incluindo root / sudo

38

As instruções em Como Eu defino variáveis PATH para todos os usuários em um servidor? trabalhe para definir o PATH para todos os usuários 'normais'. No entanto, se eu fizer sudo -s e, em seguida, printenv PATH , o caminho atualizado não será mostrado. Eu dei uma olhada, por exemplo, Definindo o caminho do TeX Live para o root , mas isso não parece fazer sentido para mim, talvez como eu sou de um fundo do Windows. Existe alguma maneira de definir o caminho verdadeiramente para todo o sistema, de modo que as entradas sejam herdadas por absolutamente todos os processos em execução no sistema?

    
por Joseph Wright 30.04.2012 / 11:48

2 respostas

41

Atualização:

A definição de variáveis de ambiente global ainda deve ser realizada em /etc/environment , mas, como você observou, usar sudo -s faz com que o efeito dessas variáveis seja "desaparecido".

A razão para isso é que sudo tem uma política de redefinir o Ambiente e definir um caminho seguro . Está ativado por padrão:

/etc/sudoers:

Defaults  env_reset
Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Assim, o que estiver definido no /etc/environment do caminho será substituído por sudo .

A página de manual para sudoers states:

   env_reset       If set, sudo will reset the environment to only contain
                   the LOGNAME, MAIL, SHELL, USER, USERNAME and the SUDO_*
                   variables.  Any variables in the caller's environment
                   that match the env_keep and env_check lists are then
                   added.  The default contents of the env_keep and
                   env_check lists are displayed when sudo is run by root
                   with the -V option.  If the secure_path option is set,
                   its value will be used for the PATH environment
                   variable.  This flag is on by default.

Como solução alternativa, você pode usar sudo su que fornecerá um shell com privilégios de root, mas contendo o PATH correto.

Resposta original

Você deve defini-lo em /etc/environment .

Teste sudo YOUR_TEXT_EDITOR /etc/environment (certifique-se de criar um backup primeiro).

Para mais informações: EnvironmentVariables

% bl0ck_qu0te%     
por lgarzo 30.04.2012 / 11:59
1

sudo -i simulará um login (de maneira semelhante a sudo su - ) e, portanto, fornecerá a você essas variáveis de ambiente.

    
por ℝaphink 15.10.2012 / 13:58