Cara mengatur lintasan untuk perintah sudo

37

Jika saya mengeluarkan

sudo my-command

bagaimana Linux mencari itu my-command?

Ada my-commanddi PATH saya. Saya bisa memohonnya tanpa masalah. Namun, ketika saya memintanya sudo, saya akan mendapatkannya command not found. Menarik, tidak pernah mengalami ini sebelumnya. Cara Mengatasi?

EDIT: Bahwa jawaban yang dipilih "Kemungkinan duplikat" salah, yah, setidaknya tidak langsung. Jawaban ini, dari terdon, adalah jawaban yang benar.

xpt
sumber

Jawaban:

48

Ini biasanya diatur oleh secure_pathopsi 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 dalam standar $PATH, Anda dapat melakukannya

  1. Gunakan path lengkap: sudo ~/bin/my-command; atau

  2. Tambahkan direktori yang berisi perintah untuk secure_path. Jalankan sudo visudodan edit garis 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 ~/binakan berada di dalamnya $PATH.

terdon
sumber
2
Atau komentar saja seluruh baris jika ini bukan mesin produksi dan kami tidak peduli. Kemudian akan menggunakan PATH pengguna. Dikatakan bahwa ini tidak disetel secara default, tetapi itu mungkin tidak selalu benar ...
Nagev
2

Inilah yang saya gunakan untuk solusi:

sudo cp $(which my-command) /usr/bin
...

The whichperintah dijalankan dalam subkulit yang non-root, sehingga mampu menemukan my-command, kemudian, sudo salinan executable ke jalur yang rootpengguna dapat akses. Tidak bagus untuk keamanan, tapi tidak masalah bagi saya menjalankan gambar buruh pelabuhan yang dihancurkan tepat setelah perintah dijalankan.

Brenden Smith
sumber