Como definir a variável global visível mesmo para comandos sudo?

1

Eu instalei o Maven no Ubuntu 16.04 seguindo as instruções .

Eu editei /etc/environment e adicionei o caminho da pasta maven / bin à variável $ PATH .

No meu usuário normal, tudo funciona bem, mas quando tento executar, por exemplo, sudo mvn test me diz que mvn é um comando desconhecido. Reiniciar não ajudou.

Erro:

/bin/sh: 1: mvn: not found

Eu também estou pouco perplexa com /bin/sh piece - estou usando o bash.

Então, onde devo colocar o caminho do binário do maven para fazer com que até os comandos do sudo o vejam? Obrigado.

    
por lot 09.08.2018 / 01:28

1 resposta

3

Ao usar sudo , seu $PATH será substituído por motivos de segurança por uma linha como esta no arquivo /etc/sudoers :

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

Exemplo

Mesmo que uma entrada como essa esteja presente em /etc/environment :

$ cat /etc/environment
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/tmp

E parece ser pego:

$ sudo env | grep PATH
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/tmp

E temos um script em /tmp :

$ ls -l /tmp/blah.bash
-rwxrwxr-x 1 vagrant vagrant 20 Aug  8 20:57 /tmp/blah.bash

E este script irá imprimir whoami quando executado:

$ cat /tmp/blah.bash
#!/bin/bash

whoami

O Sudo não nos permite:

$ sudo blah.bash
sudo: blah.bash: command not found

Alterando o caminho seguro do sudo

Mas se eu editar meu arquivo /etc/sudoers :

$ sudo visudo
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/tmp

Agora funciona:

$ sudo blah.bash
root

Segurança

Pense muito sobre por que você está adicionando diretórios adicionais ao caminho seguro de sudo . Isso é configurado assim por um bom motivo. Não tome de ânimo leve a adição de caminhos extras para os comandos sudo !

A adição de diretórios extras expõe você e seus usuários a riscos adicionais, que muitos não percebem até que seja tarde demais.

    
por 09.08.2018 / 03:03