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.