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 -i
ultimamente, 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.
fonte
PATH
e, à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.Respostas:
Eu não sei sobre os padrões no Fedora, mas no Debian o
sudo
padrão é usar asecure_path
opçã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ê usasudo -i
, o caminho é alterado depois pelos arquivos RC do usuário raiz.fonte
secure_path
opção. O padrão não foi incluído/usr/local/bin
na minha instalação. Obrigado, isso realmente ajudou a esclarecer as coisas!Você pode verificar isso muito fácil com coisas como
Compare a saída de
E coisas como
Dessa forma, você pode tentar descobrir o que está faltando na sua configuração.
fonte
/usr/local/bin
não está no meu sudo env, mas está no meu root env e no usuário env. Por que é isso?root
, como esperado. O que poderia estar fazendo com que meu sudo env seja diferente do meu root env?/usr/local/bin
caminho da raiz (tive que fazer isso manualmente, infelizmente)?O
sudo -i
comando simula o login inicial. No meu sistema Debian, também afirma que:fonte
Você pode ajustar
sudo
oenv_keep
parâmetro para incluirPATH
, embora tenha em mente as implicações de segurança de fazer isso.... iniciará o seu e
$EDITOR
, em seguida, você poderá fazer alterações emDefaults 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:
fonte
sudo
possui tratamento especial,PATH
portanto você não deve fazer isso.