Como obtenho o sudo -u $ user para usar o env de usuários?

17

Parece que sudo down que usa sudo -u $user que o ambiente do root ainda está sendo usado. Como posso fazer sudo usar o ambiente dos usuários? como uma nota especial, nem todos os usuários que eu estarei usando terão shells de login.

    
por xenoterracide 26.11.2010 / 04:54

3 respostas

21

Experimente sudo -i -u $user

gerald@book:~$ env |grep HOME
HOME=/home/gerald
gerald@book:~$ sudo -u ubuntu env |grep HOME
HOME=/home/gerald
gerald@book:~$ sudo -i -u ubuntu env |grep HOME
HOME=/home/ubuntu
    
por 26.11.2010 / 11:02
4

man sudoers na Debian menciona outra possibilidade. Não tenho certeza de qual caminho você quer, mas sua pergunta parece que você gostaria de ter a opção env_reset de /etc/sudoers - o oposto é basicamente a lista env_keep . Para definir o HOME adequado, você pode usar a opção -H para sudo diretamente ou, novamente, em sudoers , com a opção always_set_home .

Como alternativa, você pode usar env_file para especificar um ambiente exato que deseja transmitir. No entanto, acho que é melhor verificar as opções env_* em man sudoers , porque /etc/sudoers controla tudo e esse é o ponto a ser seguido.

Aqui está parte do contexto no qual eu uso env_reset dentro do meu arquivo sudoers :

Defaults        !lecture
Defaults        env_reset
Defaults        syslog=auth
Defaults        log_year
    
por 07.05.2011 / 00:42
0

Quando as variáveis de ambiente sudo ing não são preservadas.

No meu caso, eu uso documento aqui .

Você coloca suas ações como my_script.sh em seu DOCUMENTO AQUI:

su -u some_user <<EOF
./my_script.sh
EOF

Você não deve colocar a variável diretamente aqui, pois ela seria interpretada pelo usuário atual.

su -u some_user <<EOF
./my_script.sh $MY_VAR
EOF

Se $MY_VAR não estiver definido para o usuário que está executando o script, ele não será definido.

Você variável deve ser chamado dentro de seus scripts, ou você deve escapar deles com \ .

Por exemplo.

su -u some_user <<EOF
./my_script.sh \$MY_VAR
EOF

Aqui, $MY_VAR terá some_user valor contextual.

    
por 18.09.2017 / 20:41

Tags