Configurando o PATH raiz para su [duplicado]

1

Quando eu estou mudando (na minha caixa debian) para o usuário root com su , aparentemente o PATH não está configurado corretamente. Alguns diretórios vitais como usr/local/sbin estão faltando.

Em /etc/profile eu tenho as seguintes linhas (coisas aparentemente padrão não escritas por mim):

if [ "'id -u'" -eq 0]; then
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin/:/usr/bin:/sbin:/bin"
else
    PATH="/usr/local/bin:/usr/bin:/bin"
fi
export PATH

Em /etc/login.defs eu tenho (também coisas padrão):

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

Por que meu PATH não está configurado corretamente quando eu faço su ?

    
por user1583209 02.09.2018 / 12:29

1 resposta

1

Modern su não redefine mais PATH do chamador quando solicitado a preservar o ambiente; Se você precisar que isso aconteça, execute su --login .

De /usr/share/doc/util-linux/NEWS.Debian.gz :

- new 'su' (with no args, i.e. when preserving the environment) also
  preserves PATH and IFS, while old su would always reset PATH and IFS
  even in 'preserve environment' mode.
...
The first difference is probably the most user visible one. Doing
plain 'su' is a really bad idea for many reasons, so using 'su -' is
strongly recommended to always get a newly set up environment similar
to a normal login. If you want to restore behaviour more similar to
the previous one you can add 'ALWAYS_SET_PATH yes' in /etc/login.defs.
    
por 02.09.2018 / 13:12