Saya juga terkadang mengalami masalah ini, dengan perintah dasar seperti cd. Menggunakan dzdo cdkembali "perintah tidak ditemukan". Tentu saja saya kemudian menyadari bahwa cding ke direktori yang saya tidak memiliki izin di, tidak akan membantu banyak, jadi saya juga perlu shell root atau perlu dzdo ls, dzdo mv, dll isi dari luar yang dir.
Wildcard
2
Masalahnya sudo cdadalah itu cdadalah perintah bawaan, bukan program. Jika Anda ingin masuk ke direktori yang Anda tidak memiliki akses, dan (misalnya) mengganti nama file di sana, Anda dapat melakukan (misalnya) sudo mv dir/oldfile dir/newfileatausudo sh -c "cd dir; mv oldfile newfile" .
G-Man Mengatakan 'Reinstate Monica'
Jawaban:
13
Saat Anda sudo, Anda mendapatkan prakonfigurasi $PATH, yang (seharusnya) seperti path default pengguna root . Program Anda tidak ada dalam daftar direktori yang diidentifikasi oleh $PATH.
sudo mencoba aman ketika menjalankan perintah eksternal.
Ada dua cara berbeda untuk menangani variabel lingkungan. Secara default,
opsi env_resetsudoers diaktifkan. Penyebab perintah ini akan dieksekusi dengan lingkungan minimal mengandung TERM,
PATH, HOME, SHELL, LOGNAME, USERdan USERNAMEselain variabel dari proses memohon diizinkan oleh env_checkdan env_keepsudoers pilihan. Ada secara efektif daftar putih untuk variabel lingkungan.
Jika Anda tidak dapat mengonfigurasi sudountuk melestarikan Anda $PATH, solusinya yang biasa adalah menentukan pathname lengkap program. Itu mungkin tidak bekerja dengan baik dengan skrip yang memanggil executable lain di direktori (tidak diakses).
Anda harus menentukan path lengkap. Ini juga lebih aman; Jika Anda tidak menentukan jalurnya, mungkin penyerang dapat membuat program lain yang akan dijalankan dengan izin root.
Juga, Anda perlu memasukkan garis /etc/sudoersuntuk mengizinkannya. man sudoersuntuk sintaks, terlalu banyak untuk dimasukkan di sini.
cd
. Menggunakandzdo cd
kembali "perintah tidak ditemukan". Tentu saja saya kemudian menyadari bahwacd
ing ke direktori yang saya tidak memiliki izin di, tidak akan membantu banyak, jadi saya juga perlu shell root atau perludzdo ls
,dzdo mv
, dll isi dari luar yang dir.sudo cd
adalah itucd
adalah perintah bawaan, bukan program. Jika Anda ingin masuk ke direktori yang Anda tidak memiliki akses, dan (misalnya) mengganti nama file di sana, Anda dapat melakukan (misalnya)sudo mv dir/oldfile dir/newfile
atausudo sh -c "cd dir; mv oldfile newfile"
.Jawaban:
Saat Anda
sudo
, Anda mendapatkan prakonfigurasi$PATH
, yang (seharusnya) seperti path default pengguna root . Program Anda tidak ada dalam daftar direktori yang diidentifikasi oleh$PATH
.Lihat misalnya
sudo
mempertahankan $ PATH?PATH
)Jika Anda tidak dapat mengonfigurasi
sudo
untuk melestarikan Anda$PATH
, solusinya yang biasa adalah menentukan pathname lengkap program. Itu mungkin tidak bekerja dengan baik dengan skrip yang memanggil executable lain di direktori (tidak diakses).sumber
Anda harus menentukan path lengkap. Ini juga lebih aman; Jika Anda tidak menentukan jalurnya, mungkin penyerang dapat membuat program lain yang akan dijalankan dengan izin root.
Juga, Anda perlu memasukkan garis
/etc/sudoers
untuk mengizinkannya.man sudoers
untuk sintaks, terlalu banyak untuk dimasukkan di sini.sumber