Anda dapat memeriksa mengapa (berbeda) dengan menjalankan sudo sudo -V
.
Misalnya di Linux dijalankan:
$ sudo sudo -V | grep PATH
Value to override user's $PATH with: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Catatan: Pada MacOS / BSD, hanya menjalankan: sudo sudo -V
.
Daftar di atas dibatasi karena plugin kebijakan keamanan default di beberapa distribusi Linux.
Ini dijelaskan lebih lanjut dalam man sudoers
:
Jika secure_path
opsi diset, nilainya akan digunakan untuk PATH
variabel lingkungan.
secure_path
- Path digunakan untuk setiap perintah yang dijalankan dari sudo. Jika Anda tidak percaya orang yang menjalankan sudo memiliki PATH
variabel lingkungan waras, Anda mungkin ingin menggunakan ini.
Penggunaan lain adalah jika Anda ingin memiliki "jalur root" terpisah dari "jalur pengguna". Pengguna dalam grup yang ditentukan oleh exempt_group
opsi tidak terpengaruh oleh secure_path
. Opsi ini tidak diatur secara default.
Jika itu masalahnya, Anda dapat mengubahnya dengan menjalankan sudo visudo
dan mengedit file konfigurasi dan memodifikasi Anda secure_path
(menambahkan jalur tambahan yang dipisahkan oleh :
) atau menambahkan pengguna Anda ke exempt_group
(sehingga Anda tidak akan terpengaruh oleh secure_path
opsi).
Atau untuk lulus PATH
sementara dari pengguna , Anda dapat menjalankan:
sudo env PATH="$PATH" my_command
dan Anda dapat memeriksanya dengan:
sudo env PATH="$PATH" env | grep ^PATH
Lihat juga: Bagaimana cara sudo
melestarikan $PATH
?
Alasan lain mengapa lingkungan bisa berbeda sudo
, adalah karena Anda dapat env_reset
mengaktifkan opsi di sudoers
file Anda . Ini menyebabkan perintah dijalankan dengan lingkungan minimal baru.
Jadi, Anda dapat menggunakan env_keep
opsi (tidak disarankan karena alasan keamanan ) untuk melindungi variabel lingkungan pengguna Anda:
Defaults env_reset
Defaults env_keep += "PATH PYTHONPATH"