Impostare il PERCORSO in modo che si applichi a tutti gli utenti, incluso root / sudo


41

Le istruzioni in Come posso impostare le variabili PATH per tutti gli utenti su un server? lavorare per impostare il PERCORSO per tutti gli utenti "normali". Tuttavia, se lo faccio sudo -se quindi printenv PATHil percorso aggiornato non viene mostrato. Ho dato un'occhiata ad esempio all'impostazione del percorso di TeX Live per root , ma questo non sembra avere senso per me, forse perché provengo da uno sfondo di Windows. Esiste un modo per impostare il percorso veramente a livello di sistema, in modo tale che le voci siano ereditate da tutti i processi in esecuzione sul sistema?

Risposte:


43

Aggiornare:

L'impostazione delle variabili di ambiente globali deve ancora essere eseguita /etc/environment, ma come hai sottolineato, l'utilizzo sudo -sha l'effetto di queste variabili "svanite".

La ragione di ciò è sudouna politica di reimpostazione dell'ambiente e impostazione di un percorso sicuro . Si è abilitata di default:

/etc/sudoers:

Defaults  env_reset
Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Pertanto, qualunque cosa sia impostata in /etc/environmentfor the path viene ignorata sudo.

La pagina di manuale per gli sudoersstati:

   env_reset       If set, sudo will reset the environment to only contain
                   the LOGNAME, MAIL, SHELL, USER, USERNAME and the SUDO_*
                   variables.  Any variables in the caller's environment
                   that match the env_keep and env_check lists are then
                   added.  The default contents of the env_keep and
                   env_check lists are displayed when sudo is run by root
                   with the -V option.  If the secure_path option is set,
                   its value will be used for the PATH environment
                   variable.  This flag is on by default.

Come soluzione alternativa, è possibile utilizzare sudo suche fornirà una shell con privilegi di root ma contenente il PERCORSO giusto.


Risposta originale

Dovresti impostarlo /etc/environment.

Prova sudo YOUR_TEXT_EDITOR /etc/environment(assicurati di creare prima un backup).

Per ulteriori informazioni: EnvironmentVariables

Variabili d'ambiente a livello di sistema

Le impostazioni delle variabili di ambiente che incidono sul sistema nel suo complesso (piuttosto che solo su un determinato utente) non devono essere inserite in nessuno dei tanti script a livello di sistema che vengono eseguiti quando il sistema o la sessione desktop vengono caricati, ma in

/etc/environment- Questo file è specifico per le impostazioni delle variabili di ambiente a livello di sistema. Non è un file di script, ma consiste piuttosto di espressioni di assegnazione, una per riga. In particolare, questo file memorizza le impostazioni locali e del percorso a livello di sistema.

Non consigliato:

/etc/profile- Questo file viene eseguito ogni volta che viene inserita una shell di accesso bash (ad es. Quando si accede dalla console o tramite ssh), nonché dal DisplayManager quando viene caricata la sessione desktop. Questo è probabilmente il file a cui ti riferirai quando chiedi agli amministratori di sistema UNIX del veterano delle variabili di ambiente. In Ubuntu, tuttavia, questo file fa poco di più quindi invoca il file /etc/bash.bashrc.

/etc/bash.bashrc- Questa è la versione dell'intero sistema del file ~ / .bashrc. Ubuntu è configurato per impostazione predefinita per eseguire questo file ogni volta che un utente accede a una shell o all'ambiente desktop.


Ah bene: per me è tutto sbagliato (tutti dovrebbero ereditare lo stesso percorso, periodo), ma immagino che sia così.
Joseph Wright,

È possibile utilizzare visudo(necessita delle autorizzazioni di root) per modificare le impostazioni del percorso sicuro. questa non è una pratica raccomandata. È qui solo per l'istruzione.
Elliot Labs LLC il

2

sudo -isimulerà un login (in modo simile a sudo su -) e quindi ti darà queste variabili d'ambiente.


1
Non funziona in quel modo. Almeno PATH viene ripristinato sul mio Ubuntu Trusty test-vm.
Martijn Heemels,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.