Sulla mia macchina virtuale fedora, durante l'esecuzione con il mio account utente ho /usr/local/bin
nel mio cammino:
[[email protected] ~]$ env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin
E allo stesso modo durante l'esecuzione di su
:
[[email protected] ~]$ su -
Password:
[[email protected] justin]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin
Tuttavia, durante l'esecuzione tramite sudo
, questa directory non è nel percorso:
[[email protected] justin]# exit
[[email protected] ~]$ sudo bash
[[email protected] ~]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin
Perché il percorso dovrebbe essere diverso durante l'esecuzione tramite sudo
?
Risposta accettata:
Dai un'occhiata a /etc/sudoers
. Il file predefinito in Fedora (così come in RHEL, e anche Ubuntu e simili) include questa riga:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Ciò garantisce che il tuo percorso sia pulito durante l'esecuzione di binari in sudo. Questo aiuta a proteggere da alcune delle preoccupazioni indicate in questa domanda. È comodo anche se non hai /sbin
e /usr/sbin
sulla tua strada.