Ubuntu - O usuário root não pode ver a variável $ JAVA_HOME expandida para $ PATH [duplicado]

0

Eu criei uma variável $JAVA_HOME em '/ etc / environment'

JAVA_HOME="/usr/lib/jvm/jdk"
PATH="...bla bla bla:$JAVA_HOME/bin"

Eu também editei /etc/profile para ter source /etc/environment para que todos os usuários tenham Java em casa. e o próprio diretório foi feito 755 para acesso.

A impressão como root para env :

LANG=C.UTF-8    
SUDO_GID=1000
USERNAME=root
JAVA_HOME=/usr/lib/jvm/jdk
SUDO_COMMAND=/bin/su
USER=root
PWD=/home/ssuser
HOME=/root
SUDO_USER=ssuser
SUDO_UID=1000
MAIL=/var/mail/root
TERM=xterm
SHELL=/bin/bash
SHLVL=2
LOGNAME=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin

Mas quando faço o mesmo que ssuser sem sudo -ing, a variável de ambiente $JAVA_HOME é expandida para o caminho real.

SSH_CONNECTION=193.128.134.115 18497 10.1.4.4 22
LESSCLOSE=/usr/bin/lesspipe %s %s
LANG=C.UTF-8
JAVA_HOME=/usr/lib/jvm/jdk
XDG_SESSION_ID=2
USER=ssuser
PWD=/home/ssuser
HOME=/home/ssuser
SSH_CLIENT=193.128.134.115 18497 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
SSH_TTY=/dev/pts/0
MAIL=/var/mail/ssuser
TERM=xterm
SHELL=/bin/bash
SHLVL=1
LOGNAME=ssuser
XDG_RUNTIME_DIR=/run/user/1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk/bin
LESSOPEN=| /usr/bin/lesspipe %s

E isso não tem nada a ver com o que está definido em /etc/sudoers para as configurações de redefinição / manutenção de env_var. Porque eu tentei isso em um computador diferente e funciona muito bem.

Estou um pouco sem noção do porquê isso está acontecendo. Além disso, algo muito estranho que notei é que, para uma única sessão, os usuários do sudo não estão sendo solicitados a digitar a senha. Eu verifiquei /etc/sudoers e está configurado corretamente para perguntar a senha para root .

Eu tentei fechar a sessão e reabrir. Eu posso ver como eles como um usuário normal, não como root. Além disso, a reinicialização não faz nada diferente.

    
por ha9u63ar 18.07.2018 / 18:51

1 resposta

0

Até onde eu sei, você não precisa colocar a fonte /etc/environment em /etc/profile porque não é um script de shell.

Deve conter apenas key=value pares (sem " ). Além disso, /etc/environment não substitui variáveis como $JAVA_HOME aqui.

/etc/environment é carregado na inicialização, então você precisa reinicializar e estará disponível para todos os usuários.

Esta referência tem uma observação dizendo especificamente que a expansão de variável não funciona em /etc/environment :

Note: Variable expansion does not work in /etc/environment.

    
por 18.07.2018 / 19:06