Lingkungan apa yang saya dapatkan dengan sudo?


15

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 -iakhir - 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.


OS apa yang Anda gunakan (jika Linux, distribusi apa)? Ada (terlalu) banyak cara untuk mengkonfigurasi 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.
Gilles 'SO- stop being evil'

@ Gilles- Poin bagus. Saya menambahkan OS saya. Saya hanya benar-benar memperhatikan ini di Fedora (saya dulu menggunakan Ubuntu), tapi saya pikir itu karena mereka tidak menambahkan banyak pengaturan kenyamanan.
beatgammit

Jawaban:


6

Saya tidak tahu tentang standar pada Fedora, tetapi pada sudostandar Debian untuk menggunakan secure_pathopsi 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 menggunakan sudo -i, path diubah setelah itu oleh file RC pengguna root.


Saya tidak tahu tentang secure_pathopsi itu. Default tidak termasuk /usr/local/binpada instal saya. Terima kasih, ini sangat membantu membereskan!
beatgammit

3

Anda dapat memeriksa ini dengan sangat mudah dengan hal-hal seperti

Bandingkan keluaran dari

sudo env 
env

Dan hal-hal seperti

sudo whoami 
whoami

Dengan begitu Anda dapat mencoba mencari tahu apa yang tidak ada dalam pengaturan Anda.


Keren, tidak tahu tentang itu. Lagi pula, /usr/local/bintidak ada dalam sudo env saya, tetapi itu ada di root env saya dan user env. Kenapa ini?
beatgammit

sudo whoami kembali root, seperti yang diharapkan. Apa yang bisa menyebabkan sudo env saya berbeda dari root env?
beatgammit

Tidak tahu, tetapi harus ada beberapa pengaturan yang hilang di suatu tempat, / usr / local / bin biasanya disertakan. Mungkin Anda menghapus $ PATH env karena kesalahan di beberapa configfile?
Johan

Apakah sudo sumber /root/.bashrc? Di situlah saya menambahkan /usr/local/binke jalur root (sayangnya saya harus melakukan ini secara manual)?
beatgammit

Saya pikir Anda harus memodifikasi konfigurasi global shell Anda dan lihat apa yang terjadi. Jika Anda menjalankan bash, itu akan menjadi seperti /etc/bash.bashrc
Johan

2

The sudo -iperintah mensimulasikan login awal. Di sistem Debian saya, ini juga menyatakan bahwa:

Ini berarti bahwa file sumber daya khusus masuk seperti .profile atau .login akan dibaca oleh shell. Jika suatu perintah ditentukan, itu diteruskan ke shell untuk dieksekusi. Kalau tidak, shell interaktif dijalankan. sudo mencoba mengubah ke direktori home pengguna tersebut sebelum menjalankan shell. Ini juga menginisialisasi lingkungan, meninggalkan DISPLAY dan JANGKAUAN tidak berubah, mengatur HOME, MAIL, SHELL, USER, LOGNAME, dan PATH, serta konten / etc / environment pada sistem Linux dan AIX. Semua variabel lingkungan lainnya dihapus.


0

Anda dapat menyesuaikan sudo's env_keepparameter untuk memasukkan PATH, meskipun Anda harus diingat implikasi keamanan melakukan hal itu.

visudo

... akan meluncurkan $EDITOR, lalu Anda dapat membuat perubahan ke Defaults env_keep =... yang sesuai.

Anda juga dapat menambahkan / usr / local / bin ke jalur sistem dengan menambahkan file ke /etc/profile.d.

misalnya:

cat <<EOF > /etc/profile.d/tjameson.sh
export PATH=$PATH:/usr/local/bin
EOF

sudomemiliki penanganan khusus PATHsehingga Anda tidak harus melakukan ini.
Arrowmaster
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.