Baik Debian dan Ubuntu mengirimkan /etc/sudoers
file yang berisi Defaults env_reset
, yang me-reset variabel lingkungan.
Namun, perilaku env_reset
telah diubah dari tidak menyentuh $ HOME untuk mengatur ulang ke rumah pengguna target.
Ubuntu memutuskan untuk menambal versi mereka sudo
untuk menjaga perilaku sebelumnya:
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/760140
Di Ubuntu, untuk mereset variabel lingkungan $ HOME ke pengguna target, kita harus mengatur salah satu Defaults always_set_home
atau Defaults set_home
(dalam hal ini hanya sudo -s
akan mendapatkan HOME diperbarui) di dalamnya /etc/sudoers
.
Bug ini di pelacak Ubuntu memiliki beberapa alasan lagi untuk tidak menetapkan $ HOME di sudo:
https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/1373495
Lihat komentar # 4:
Jika HOME dihapus, maka mis. Vim, bash, dll., Akan menggunakan /root/.vimrc, /root/.bashrc, dll daripada pengguna ~ / .vimrc, ~ / .bashrc, dll. Meskipun itu adalah ide yang buruk untuk menjalankan klien X melalui sudo, mereka juga kemungkinan akan mencari lokasi yang salah untuk file konfigurasi, dan ada kemungkinan klien X11 bahkan tidak dapat terhubung ke server X11 jika mereka diarahkan pada file .Xauthority yang salah.
Ini adalah keputusan sadar oleh pengembang Ubuntu.
Jawaban ini memiliki detail lebih lanjut tentang opsi sudoers seperti always_set_home
:
https://unix.stackexchange.com/a/91572/281844
Ada masalah kedua dalam pertanyaan Anda, sudo echo $HOME
yang masih menampilkan rumah pengguna bahkan di Debian.
Itu terjadi karena shell berkembang $HOME
sebelum menjalankan sudo
perintah.
Jadi ini:
$ sudo echo $HOME
Pertama kali diperluas oleh shell ke:
$ sudo echo /home/user
Dan kemudian sudo dieksekusi echo /home/user
sebagai root ...
Ini harus menunjukkan perbedaannya juga:
$ sudo bash -c 'echo $HOME'
/root
Atau dapatkan shell root lengkap dan lihat variabel lingkungan di sana:
$ sudo -s
# echo $HOME
/root