Di fedora VM saya, saat menjalankan dengan akun pengguna saya, saya memiliki /usr/local/bin
di jalan saya:
[[email protected] ~]$ env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin
Begitu juga saat menjalankan su
:
[[email protected] ~]$ su -
Password:
[[email protected] justin]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin
Namun, saat dijalankan melalui sudo
, direktori ini tidak berada di jalur:
[[email protected] justin]# exit
[[email protected] ~]$ sudo bash
[[email protected] ~]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin
Mengapa jalurnya berbeda saat dijalankan melalui sudo
?
Jawaban yang Diterima:
Lihat /etc/sudoers
. File default di Fedora (serta di RHEL, dan juga Ubuntu dan sejenisnya) menyertakan baris ini:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Yang memastikan bahwa jalur Anda bersih saat menjalankan binari di bawah Sudo. Ini membantu melindungi dari beberapa masalah yang disebutkan dalam pertanyaan ini. Juga nyaman jika Anda tidak memiliki /sbin
dan /usr/sbin
di jalan Anda sendiri.