GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Membuat `Sudo` Preserve $path?

Saya memiliki program yang diinstal di direktori khusus di bawah /opt. Untuk mempermudah menjalankannya, saya mengedit bashrc saya untuk menambahkan direktori tersebut ke jalur saya:

export PATH=$PATH:/opt/godi/bin:/opt/godi/sbin

Ini berfungsi dengan baik jika saya ingin menjalankan program tanpa Sudo. Namun, jika saya mencoba menjalankannya dengan sudo, itu gagal dengan kesalahan "perintah tidak ditemukan".

$ sudo godi_console
sudo: godi_console: command not found

Memeriksa variabel PATH setelah menggunakan Sudo mengungkapkan bahwa itu tidak termasuk PATH yang sama dengan yang saya miliki sebagai pengguna biasa:

$ sudo sh
# echo $PATH                 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Mengapa PATH tidak sama? Apakah saya melakukan sesuatu yang salah? Saya di Debian Jessie, jika itu membuat perbedaan.

Satu hal yang saya coba adalah memanggil /opt/godi/sbin/godi_console secara langsung, meneruskan jalur absolut ke yang dapat dieksekusi. Sayangnya, itu tidak membantu dalam kasus khusus ini karena godi_console sendiri bergantung pada PATH yang disetel dengan benar.

Jawaban yang Diterima:

Anda selalu dapat melakukan:

sudo env "PATH=$PATH" godi_console

Sebagai tindakan pengamanan di Debian, /etc/sudoers memiliki secure_path opsi disetel ke nilai aman.

Perhatikan bahwa:

sudo "PATH=$PATH" godi_console

Dimana sudo memperlakukan argumen utama yang mengandung = karakter sebagai penetapan variabel lingkungan dengan sendirinya, juga akan berfungsi menjalankan godi_console dengan Anda $PATH (sebagai lawan dari secure_path ) di lingkungannya, tetapi tidak akan memengaruhi sudo jalur pencarian untuk dieksekusi, jadi tidak akan membantu sudo dalam menemukan godi_console .


Linux
  1. Bagaimana Cara Benar Menambahkan Path To Path?

  2. Bagaimana Cara Menambahkan Ke $path dengan Bersih?

  3. Bagaimana Cara `alias Sudo !!`?

  1. Bagaimana saya bisa menambahkan dir ke $PATH di Makefile?

  2. Bagaimana cara membuat alias untuk jalur yang panjang?

  3. Bagaimana cara membuat sudo meminta kata sandi root?

  1. Cara Menginstal Vagrant di Linux

  2. Bagaimana saya bisa mengedit $PATH di linux?

  3. Cara mengatur jalur untuk perintah sudo