Ho installato eclipse nella mia home directory e ho inserito il suo percorso in PATH
in ~/.profile
.
Quindi funziona da
$ eclipse
Ma quando chiamalo con sudo
, eclipse
non viene trovato:
$ sudo eclipse
sudo: eclipse: command not found
Quale PATH
fa sudo eclipse
utilizzare per cercare eclipse
? È l'utente root
's PATH
?
Grazie.
Risposta accettata:
sudo
per impostazione predefinita usa un minimo PATH
, per renderlo sicuro per l'uso da parte della root utente. Non è necessariamente lo stesso di PATH
otterresti accedendo come root utente, o facendo
sudo su -
Ad esempio, nelle versioni più recenti di Red Hat, ho notato che il percorso omette /usr/local/bin
.
La pagina del manuale riassume questo in una sezione intitolata Note sulla sicurezza :
sudo cerca di essere sicuro durante l'esecuzione di comandi esterni.
Esistono due modi distinti per gestire le variabili di ambiente. Per impostazione predefinita, il env_reset
l'opzione sudoers
è abilitata. Ciò fa sì che i comandi vengano eseguiti con un ambiente minimo contenente TERM
, PATH
, HOME
, SHELL
, LOGNAME
, USER
e USERNAME
oltre alle variabili del processo di invocazione
consentite da env_check
e env_keep
opzioni sudoers. Esiste effettivamente una whitelist per
variabili di ambiente.
Ulteriori letture:
-
sudoers – elenco di quali utenti possono eseguire cosa
secure_path
Percorso utilizzato per ogni comando eseguito da sudo. Se non ti fidi che le persone che eseguono sudo per
abbiano una sana variabile di ambiente PATH, potresti voler usare questa. Un altro utilizzo è se
si desidera che il "percorso radice" sia separato dal "percorso utente". Utenti nel gruppo
specificato daexempt_group
opzione non sono interessati dasecure_path
. Questa opzione non è
impostata per impostazione predefinita. -
sudo:esegue un comando come un altro utente