Ketika saya menjalankan sudo, apa yang sebenarnya terjadi pada lingkungan saya?
Ketika saya berlari sudo command
, sepertinya tidak melihat lingkungan root atau saya. Misalnya, jalur saya untuk keduanya termasuk /usr/local/bin
, tetapi jika saya mencoba menjalankan salah satu program tanpa jalur lengkap, gagal.
Saya pikir sudo berlari sebagai root, dan karenanya mendapat lingkungan root. Apakah ada cara berbeda yang dijalankan bash di bawah sudo daripada di root atau pengguna normal saya?
EDIT:
Saya telah menggunakan sudo -i
akhir - akhir ini, tetapi baru-baru ini telah menyebabkan masalah karena direktori kerja saya saat ini diatur ke /root
. Ini seperti yang diharapkan (agak), tapi saya masih tidak mengerti mengapa sudo tidak mengenali executable saya di /usr/local/bin
.
EDIT:
Saya menjalankan Fedora 15.
sumber
PATH
, dan kadang-kadang tidak mudah untuk menemukan siapa yang menimpanya lebih dulu. Ini bisa berupa pengaturan sistem (misalnya dalam PAM), sudo sendiri, atau skrip profil berikutnya.Jawaban:
Saya tidak tahu tentang standar pada Fedora, tetapi pada
sudo
standar Debian untuk menggunakansecure_path
opsi dengan nilai default/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
.Ini berarti jalur diubah ke nilai itu setiap kali Anda menggunakan
sudo
; tetapi ketika Anda menggunakansudo -i
, path diubah setelah itu oleh file RC pengguna root.sumber
secure_path
opsi itu. Default tidak termasuk/usr/local/bin
pada instal saya. Terima kasih, ini sangat membantu membereskan!Anda dapat memeriksa ini dengan sangat mudah dengan hal-hal seperti
Bandingkan keluaran dari
Dan hal-hal seperti
Dengan begitu Anda dapat mencoba mencari tahu apa yang tidak ada dalam pengaturan Anda.
sumber
/usr/local/bin
tidak ada dalam sudo env saya, tetapi itu ada di root env saya dan user env. Kenapa ini?root
, seperti yang diharapkan. Apa yang bisa menyebabkan sudo env saya berbeda dari root env?/usr/local/bin
ke jalur root (sayangnya saya harus melakukan ini secara manual)?The
sudo -i
perintah mensimulasikan login awal. Di sistem Debian saya, ini juga menyatakan bahwa:sumber
Anda dapat menyesuaikan
sudo
'senv_keep
parameter untuk memasukkanPATH
, meskipun Anda harus diingat implikasi keamanan melakukan hal itu.... akan meluncurkan
$EDITOR
, lalu Anda dapat membuat perubahan keDefaults env_keep =
... yang sesuai.Anda juga dapat menambahkan / usr / local / bin ke jalur sistem dengan menambahkan file ke
/etc/profile.d
.misalnya:
sumber
sudo
memiliki penanganan khususPATH
sehingga Anda tidak harus melakukan ini.