Que ambiente eu compro com o sudo?

14

Quando eu executo o sudo, o que exatamente acontece com o meu ambiente?

Quando executo sudo command , parece que não vejo o ambiente do meu ou do root. Por exemplo, meu caminho para ambos inclui /usr/local/bin , mas se eu tentar executar um dos programas sem o caminho completo, ele falhará.

Eu achei que o sudo era o root e, portanto, o ambiente do root. Existe uma maneira diferente que o bash executa sob o sudo do que sob o usuário root ou normal?

EDITAR:

Eu tenho usado sudo -i ultimamente, mas recentemente tem causado problemas porque meu diretório de trabalho atual é definido como /root . Isto é como esperado (sorta), mas eu ainda não entendo porque o sudo não está reconhecendo meus executáveis em /usr/local/bin .

EDITAR:

Estou executando o Fedora 15.

    
por beatgammit 05.07.2011 / 10:51

4 respostas

6

Eu não sei sobre os padrões no Fedora, mas no Debian sudo usa como padrão a opção secure_path com um valor padrão de /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin .

Isso significa que o caminho é alterado para esse valor sempre que você usar sudo ; mas quando você usa sudo -i , o caminho é alterado depois disso pelos arquivos RC do usuário root.

    
por 05.07.2011 / 19:54
3

Você pode verificar isso bastante fácil com coisas como

Compare a saída de

sudo env 
env

E coisas como

sudo whoami 
whoami

Dessa forma, você pode tentar descobrir o que está faltando na sua configuração.

    
por 05.07.2011 / 11:14
2

O comando sudo -i simula o login inicial. No meu sistema Debian, também afirma que:

This means that login-specific resource files such as .profile or .login will be read by the shell. If a command is specified, it is passed to the shell for execution. Otherwise, an interactive shell is executed. sudo attempts to change to that user's home directory before running the shell. It also initializes the environment, leaving DISPLAY and TERM unchanged, setting HOME, MAIL, SHELL, USER, LOGNAME, and PATH, as well as the contents of /etc/environment on Linux and AIX systems. All other environment variables are removed.

    
por 05.07.2011 / 11:22
0

Você pode ajustar o parâmetro sudo do env_keep para incluir PATH , embora tenha em mente as implicações de segurança disso.

visudo

... iniciará seu $EDITOR , e você poderá fazer alterações em Defaults env_keep = ... conforme apropriado.

Além disso, você pode adicionar / usr / local / bin ao caminho do sistema adicionando arquivos a /etc/profile.d .

por exemplo:

cat <<EOF > /etc/profile.d/tjameson.sh
export PATH=$PATH:/usr/local/bin
EOF
    
por 05.07.2011 / 17:34