profil bash berfungsi untuk pengguna tetapi tidak sudo

9

Saya telah memodifikasi file profil saya untuk memasukkan folder jika flash drive dicolokkan. Ketika menjalankan perintah sebagai pengguna berfungsi dengan baik tetapi memberitahu saya bahwa skrip harus dijalankan oleh sudo (ini yang saya inginkan). Namun, ketika saya mencoba menjalankannya dengan sudo saya mendapatkan "perintah tidak ditemukan"

Saya memiliki symlink (flash) di folder / var / www saya yang menunjuk ke / media / flash drive saya. (jangankan pengaturan ini karena hanya untuk dev)

ini adalah .profile pengguna saya:

# set PATH so it includes flash scripts
if [ -d "/var/www/flash/scripts" ] ; then
    PATH="/var/www/flash/scripts:$PATH"
fi

ketika mencoba menjalankan sebagai sudo saya dapatkan:

sudo: script: command not found    

ada ide?

pengguna564448
sumber

Jawaban:

3

Ketika Anda menjalankan skrip saat sudoAnda mencoba mengakses root. Jadi, Anda $HOME/.profiletidak akan diakses sebaliknya /root/.profileakan diakses.

Jadi membuat perubahan apa yang pernah Anda lakukan di $HOME/.profileuntuk /root/.profile. Untuk membuat /root/.profile. Gunakan perintah berikut.

sudo su
cd /root
touch .profile

setelah melakukan perubahan coba jalankan skrip.

atau edit $HOME/.bashrcdan tambahkan baris berikut

alias sudo='sudo env PATH=$PATH $@'

Semoga ini membantu.

devav2
sumber
Saya mencoba "alias sudo = 'sudo env PATH = $ PATH $ @'" tetapi saya mendapatkan "env: wp: Izin ditolak"
user564448
maaf, "wp" adalah skrip
user564448
Coba langkah lain yang saya sebutkan.
devav2
1
Baca di sini, Anda harus menggunakansudo su -p
devav2
2

Anda dapat mempertahankan nilai $PATHsaat menggunakan sudo. Gunakan visudountuk menambahkan $PATHke daftar variabel untuk disimpan. Baris seperti berikut ini /etc/sudoersharus melakukan trik:

Defaults env_keep += "PATH"
Dennis Kaarsemaker
sumber
1

itu adalah perilaku sudo di ubuntu ..

misalnya jalankan perintah berikut

echo 'echo $PATH' | sh

dan dari yang ini

echo 'echo $PATH' | sudo sh 

Anda melihat output berbeda! untuk menghindari jalur yang berbeda, letakkan yang berikut ini di ~ / .bashrc Anda

alias sudo='sudo env PATH=$PATH'
Christopher Jahnke
sumber
Setelah memasukkan alias sudo = 'sudo env PATH = $ PATH' ke dalam .bashrc saya mendapatkan "env: wp: Izin ditolak"
user564448
-1

Anda juga dapat memindahkan file Anda di direktori sudoers bekas:

    sudo mv $HOME/bash/script.sh /usr/sbin/ 
LeGilles
sumber