su vs su - (no Debian): por que o PATH é o mesmo?

4

Eu sei qual deve ser a diferença entre su e su - , mas no meu sistema (Debian) por exemplo PATH é o mesmo:

[root]# su
[root]# echo $PATH
/user_path/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[root]# exit
[root]$ su -
[root@debian ~]# echo $PATH
/user_path/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Estou começando a pensar que as configurações podem ser alteradas nos arquivos de configuração.

    
por PaulP 23.02.2011 / 18:59

2 respostas

5

Para configurar o su PATH , dê uma olhada em /etc/login.defs :

ENV_SUPATH      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH        PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Há também vários outros lugares em que PATH pode ser alterado, incluindo:

  • /etc/environment
  • /etc/bash.bashrc
  • /etc/profile
  • /etc/profile.d/*
  • ~/.bashrc
  • ~/.bash_profile

Sem nada de especial nas configurações por usuário, su parece estar recebendo seu PATH de /etc/environment e su - parece estar obtendo seu ambiente de /etc/login.defs ENV_SUPATH .

Então, no seu sistema, eu acho que você tem o mesmo valor PATH em /etc/login.defs como em /etc/environment , ou você tem alguma configuração extra em /etc/profile.d , /etc/bash.bashrc ou algum arquivo rc em /home/someuser .

    
por 23.02.2011 / 22:15
4

O parâmetro - significa o ambiente inicial, que é quase o mesmo que o ambiente de login do usuário.

Sem - o ambiente é igual ao ambiente do usuário original.

Por exemplo, PATH é geralmente o mesmo para usuários root e normais. Em alguns sistemas, não há pastas sbin para usuários normais. Você não pode desativar facilmente - de su . Claro que você pode editar o código fonte.

Você pode tentar isso executando

export FOO=bar
su # enter your password
echo $FOO
logout
su - # enter your password again
echo $FOO

Na primeira vez, echo $FOO imprime "bar" e, na segunda vez, está vazio.

    
por 23.02.2011 / 19:33