Por que o valor de $ PATH é diferente para usuário root e normal?

2

para o usuário normal, obtenho:

  

/ usr / lib / lightdm / lightdm: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / jogos: / usr / local / games: / home / monty / google_appengine

que, na verdade, é o conteúdo de /etc/environment

Para o root eu recebo:

  

/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin

qual é a razão por trás disso e qual arquivo contém essa linha?

    
por Ashwini Chaudhary 20.11.2012 / 10:08

2 respostas

3

PATH é uma variável de ambiente e, portanto, é 'default' ou 'redefine' quando você altera o ambiente. Veja man sudoers para uma explicação:

 env_reset       If set, sudo will reset the environment to only contain
                   the LOGNAME, SHELL, USER, USERNAME and the SUDO_* vari-
                   ables.  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 sudo was compiled with the SECURE_PATH
                   option, its value will be used for the PATH environment
                   variable.  This flag is on by default.
  

/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin

é o caminho básico sem modificações. Usuários diferentes terão diretórios diferentes adicionados a eles por vários motivos.

E o raciocínio deve ser: o root nunca deve ter mais diretórios em seu PATH do que o necessário. Ou o contrário: se o root precisar de um arquivo, ele deve estar em /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin . Você não joga jogos como root. Você não usa um gerenciador de desktop como root. Uma raiz é para tarefas administrativas.

O wiki tem mais algumas informações (entre outras, quais arquivos são usados para adicionar ao PATH): link

    
por Rinzwind 20.11.2012 / 10:31
1

No caso do usuário normal, arquivos como ~/.profile , ~/.bash_profile , ~/.bashrc podem estar adicionando ao seu caminho padrão (que deve ser o mesmo que você listou para o root.

Você pode verificar qualquer um desses arquivos (esses são os mais comuns que eu conheço) para linhas como

export PATH=$PATH:/usr/games:/usr/local/games:/home/monty/google_appengine
ou export PATH=/usr/lib/lightdm/lightdm:$PATH

Editar

.bashrc e .profile parecem ter versões padrão ( /etc/profile/ e /etc/bash.basrhc ) em /etc/ , você pode verificar o caminho para o Root.

Além disso, /root/ é o equivalente a /home/<username> para root . Espero que o diretório tenha os arquivos ~/.profile , ~/.bash_profile , ~/.bashrc também, o que também ajudaria a controlar o $ PATH de root .

    
por Karthik T 20.11.2012 / 10:28