Ini biasanya diatur oleh secure_path
opsi di /etc/sudoers
. Dari man sudoers
:
secure_path Path used for every command run from sudo. If you don't
trust the people running sudo to have a sane PATH environ‐
ment variable you may want to use this. Another use is if
you want to have the “root path” be separate from the “user
path”. Users in the group specified by the exempt_group
option are not affected by secure_path. This option is not
set by default.
Untuk menjalankan perintah yang tidak ada di default $PATH
, Anda juga bisa
-
Gunakan jalur lengkap:
sudo ~/bin/my-command
; atau -
Tambahkan direktori yang berisi perintah ke
secure_path
. Jalankansudo visudo
dan edit baris jalur aman:Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/youruser/bin/"
Simpan file dan lain kali Anda menjalankan
sudo
, direktori~/bin
akan berada di$PATH
.
Inilah yang saya gunakan sebagai solusi:
sudo cp $(which my-command) /usr/bin
...
which
perintah dijalankan dalam subkulit non-root, sehingga dapat menemukan my-command
, lalu, sudo menyalin file yang dapat dieksekusi ke jalur yang root
pengguna dapat mengakses. Tidak bagus untuk keamanan, tetapi tidak apa-apa bagi saya menjalankan gambar buruh pelabuhan yang sedang dihancurkan tepat setelah perintah dijalankan.