Saya memiliki akses sudo di server teman saya, menjalankan centos-6.3, tetapi ketika saya mencoba menjalankan beberapa perintah seperti sudo vim /var/www/html/index.html
saya mendapatkan kesalahan, sudo: vim: command not found
saya bisa, menjalankan sudo su
dan kemudian vim /var/www/html/index.html
dan berfungsi seperti yang diharapkan.
echo $PATH
dan sudo echo $PATH
keduanya menghasilkan:
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jared/bin
sudo which vim
Namun hasil:
which: no vim in (/sbin:/bin:/usr/sbin:/usr/bin)
Saya sudah mencoba menambahkan
export PATH=$PATH:/usr/local/bin
untuk /root/.bashrc
yang memperbaiki masalah saat menggunakan sudo su
tetapi tidak adil sudo <command>
.
Bagaimana saya mulai sudo <command>
bekerja?
Jawaban:
Saat berjalan
sudo
, banyak sistem dikonfigurasikan untuk menghapus lingkungan dari semua nilai yang tidak masuk daftar putih, dan untuk mereset variabel PATH ke nilai yang telah disanitasi.Anda akan menemukan yang pertama sebagai
Defaults env_reset
dan beberapaDefaults env_keep += "SOME_VARIABLE_NAME"
di/etc/sudoers
. Override "secure" yang terakhirPATH
ditentukan sebagaiDefaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
- hapus baris ini untuk menghapus perilaku ini saatsudo
ing.Bagaimana variabel lingkungan mana yang ditangani dicetak saat Anda menjalankan
sudo -V
sebagairoot
.Jika Anda tidak ingin menyingkirkan default ini, Anda selalu dapat menentukan program menggunakan path lengkap mereka (
sudo /usr/local/bin/vim
).Atau, Anda dapat mengizinkan akun Anda ke
SETENV
dalamsudoers
file, misalnya:Ini memungkinkan Anda untuk menimpa default lingkungan seperti ini
sudo PATH=$PATH which vim
:, karena variabel diintepretasikan oleh shell Anda sebelum perintah dijalankan, menghasilkan sebuah warisanPATH
(yang kemungkinan tidak akan menyertakan/sbin
dll.)sumber
tidak melakukan apa yang Anda pikirkan.
$PATH
digantikan oleh shell (Anda) sebelum menjalankan perintah.Untuk mencapai perilaku yang diinginkan, Anda dapat menggunakan
sudo -i
.Dari man sudo :
sumber
Sampai Anda menyelesaikan masalah dengan jalur gunakan nama path lengkap
sumber