PATH'yi, root / sudo dahil tüm kullanıcılar için geçerli olacak şekilde ayarlamak


41

Talimatlar Bir sunucudaki tüm kullanıcılar için PATH değişkenlerini nasıl ayarlarım? PATH'i tüm 'normal' kullanıcılar için ayarlamak için çalışın. Ancak, yaparsam sudo -sve sonra printenv PATHgüncellenmiş yol gösterilmez. Kök için TeX Live yolunu ayarlama örneğine baktım , ancak bu belki de Windows arkaplanından geldiğim için bana mantıklı gelmiyor. Sistem genelinde gerçek bir yol belirleme, girişlerin sistemde çalışan her işlem tarafından devralınması için bir yol var mı?

Yanıtlar:


43

Güncelleme:

Global ortam değişkenlerinin ayarlanması hala yapılmalıdır /etc/environment, ancak belirttiğiniz gibi sudo -s, bu değişkenlerin etkisinin “ortadan kalkması” vardır.

Bunun nedeni , Ortamı sıfırlama ve güvenli bir yol belirleme sudopolitikasıdır . Varsayılan olarak etkindir:

/etc/sudoers:

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

Böylece /etc/environment, yol için belirlenen her şey geçersiz kılınır sudo.

sudoersDevletler için manuel sayfa :

   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.

Geçici bir çözüm olarak, sudo sukök ayrıcalıklarına sahip ancak doğru PATH içeren bir kabuk sağlayacak olanı kullanabilirsiniz.


Orijinal cevap

Onu ayarlamalısın /etc/environment.

Deneyin sudo YOUR_TEXT_EDITOR /etc/environment(önce bir yedekleme oluşturduğunuzdan emin olun).

Daha fazla bilgi için: EnvironmentVariables

Sistem genelinde çevre değişkenleri

Sistemi bir bütün olarak etkileyen ortam değişken ayarları (yalnızca belirli bir kullanıcı yerine), sistem veya masaüstü oturumu yüklendiğinde çalıştırılan sistem düzeyindeki komut dosyalarının hiçbirine yerleştirilmemeli,

/etc/environment- Bu dosya özellikle sistem çapında ortam değişken ayarları içindir. Bu bir komut dosyası değil, her satıra bir tane olmak üzere atama ifadelerinden oluşur. Özellikle, bu dosya sistem genelindeki yerel ayarları ve yol ayarlarını saklar.

Tavsiye edilmez:

/etc/profile- Bu dosya, bir bash giriş kabuğu girildiğinde (örneğin konsoldan veya ssh üzerinden giriş yaparken) ve ayrıca masaüstü oturumu yüklendiğinde DisplayManager tarafından yürütülür. Muhtemelen kıdemli UNIX sistem yöneticilerine ortam değişkenleri hakkında bilgi verirken başvurulan dosya budur. Ancak Ubuntu'da, bu dosya /etc/bash.bashrc dosyasını çağırdıktan sonra çok az şey yapar.

/etc/bash.bashrc- Bu ~ / .bashrc dosyasının sistem çapında bir sürümüdür. Ubuntu, bir kullanıcı bir kabuk veya masaüstü ortamına her girdiğinde bu dosyayı yürütmek için varsayılan olarak yapılandırılmıştır.


Ah iyi: Bana göre bu tamamen yanlış bir yoldur (herkes aynı yolu, dönemi miras almalı), ama sanırım bu böyle.
Joseph Wright

visudoGüvenli yol ayarlarını düzenlemek için kullanabilirsiniz (kök izinleri gerekir). bu önerilen bir uygulama değildir. Sadece eğitim için burada.
Elliot Labs LLC,

2

sudo -ibir giriş bilgisini (benzer şekilde sudo su -) taklit edecek ve böylece size bu ortam değişkenlerini verecektir.


1
Bu şekilde çalışmıyor. Ubuntu Trusty test-vm cihazımda en azından PATH sıfırlandı.
Martijn Heemels 12:15
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.