Nedenini (farklı) çalıştırarak kontrol edebilirsiniz sudo sudo -V
.
Örneğin Linux çalıştırmasında:
$ sudo sudo -V | grep PATH
Value to override user's $PATH with: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Not: Açık MacOS / BSD, sadece çalıştırın: sudo sudo -V
.
Bazı Linux dağıtımlarında varsayılan güvenlik politikası eklentisi nedeniyle yukarıdaki liste kısıtlanmıştır.
Bu daha ayrıntılı olarak açıklanmıştır man sudoers
:
Eğer secure_path
seçenek ayarlanırsa, değeri için kullanılacak PATH
ortam değişkeni.
secure_path
- Her komut için sudo'dan çalıştırılan yol. Sudo çalıştıran insanlara aklı başında bir PATH
ortam değişkenine sahip olmalarına güvenmiyorsanız, bunu kullanmak isteyebilirsiniz.
Başka bir kullanım, “kök yolun” “kullanıcı yolundan” ayrı olmasını istiyorsanız. exempt_group
Seçenek tarafından belirtilen gruptaki kullanıcılar bundan etkilenmez secure_path
. Bu seçenek varsayılan olarak ayarlanmamış.
Bu durumda, sudo visudo
yapılandırma dosyasını çalıştırarak ve düzenleyerek ve değiştirerek secure_path
(ayrı yol ekleyerek :
) veya kullanıcıyı içine ekleyerek exempt_group
( secure_path
seçeneklerden etkilenmeyeceksiniz ) değiştirebilirsiniz.
Veya kullanıcının PATH
geçici mesajını geçmek için koşabilirsiniz:
sudo env PATH="$PATH" my_command
ve şunu kontrol edebilirsiniz:
sudo env PATH="$PATH" env | grep ^PATH
Ayrıca bkz: Nasıl yapmak sudo
korumak $PATH
?
Ortamın farklı olmasının diğer bir nedeni de, dosyanızda etkin seçeneği etkinleştirilmiş sudo
olmanız olabilir . Bu, komutların yeni, minimal bir ortamla yürütülmesine neden olur.env_reset
sudoers
Bu nedenle , kullanıcı ortam değişkenlerinizi korumak için env_keep
seçeneği ( güvenlik nedeniyle önerilmez ) kullanabilirsiniz:
Defaults env_reset
Defaults env_keep += "PATH PYTHONPATH"