Que ambiente eu obtenho com o sudo?

15

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

Quando corro sudo command, não parece ver o meu ambiente ou o da raiz. 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 pensei que o sudo rodava como root e, portanto, obtinha o ambiente raiz. Existe uma maneira diferente de o bash ser executado no sudo do que no root ou no meu usuário normal?

EDITAR:

Eu tenho usado sudo -iultimamente, mas recentemente ele está causando problemas porque meu diretório de trabalho atual é definido como /root. Isso é como esperado (sorta), mas ainda não entendo por que o sudo não está reconhecendo meus executáveis ​​no /usr/local/bin.

EDITAR:

Estou executando o Fedora 15.

beatgammit
fonte
Qual sistema operacional você está usando (se Linux, qual distribuição)? Existem (também) muitas maneiras de configurar PATHe, às vezes, não é fácil encontrar quem a substitui pela última vez. Pode ser alguma configuração do sistema (por exemplo, no PAM), o próprio sudo ou um script de perfil subsequente.
Gilles 'SO- stop be evil'
@ Gilles- Bom ponto. Eu adicionei meu sistema operacional. Eu realmente só notei isso no Fedora (eu costumava usar o Ubuntu), mas pensei que era porque eles não adicionavam muita configuração de conveniência.
beatgammit

Respostas:

6

Eu não sei sobre os padrões no Fedora, mas no Debian o sudopadrão é usar a secure_pathopção com o 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 toda vez que você usa sudo; mas quando você usa sudo -i, o caminho é alterado depois pelos arquivos RC do usuário raiz.

Arrowmaster
fonte
Eu não sabia sobre a secure_pathopção. O padrão não foi incluído /usr/local/binna minha instalação. Obrigado, isso realmente ajudou a esclarecer as coisas!
beatgammit
3

Você pode verificar isso muito 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.

Johan
fonte
Legal, não sabia disso. Enfim, /usr/local/binnão está no meu sudo env, mas está no meu root env e no usuário env. Por que é isso?
beatgammit
sudo whoami retorna root, como esperado. O que poderia estar fazendo com que meu sudo env seja diferente do meu root env?
Beatgammit
Não sei, mas deve haver alguma configuração ausente em algum lugar, / usr / local / bin geralmente está incluído. Talvez você tenha limpado o $ PATH env por engano em algum arquivo de configuração?
7277 Johan
O sudo fonte /root/.bashrc? É aí que eu adiciono o /usr/local/bincaminho da raiz (tive que fazer isso manualmente, infelizmente)?
beatgammit
Eu acho que você deve modificar sua configuração global de conchas e ver o que acontece. Se você estiver executando o bash seria algo como /etc/bash.bashrc
Johan
2

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

Isso significa que os arquivos de recursos específicos de login, como .profile ou .login, serão lidos pelo shell. Se um comando for especificado, ele será passado para o shell para execução. Caso contrário, um shell interativo é executado. O sudo tenta mudar para o diretório inicial do usuário antes de executar o shell. Também inicializa o ambiente, deixando DISPLAY e TERM inalterados, configurando HOME, MAIL, SHELL, USER, LOGNAME e PATH, além do conteúdo de / etc / environment nos sistemas Linux e AIX. Todas as outras variáveis ​​de ambiente são removidas.

M'vy
fonte
0

Você pode ajustar sudoo env_keepparâmetro para incluir PATH, embora tenha em mente as implicações de segurança de fazer isso.

visudo

... iniciará o seu e $EDITOR, em seguida, 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
Brian Cain
fonte
sudopossui tratamento especial, PATHportanto você não deve fazer isso.
Arrowmaster