Saya mencoba memastikan ketika skrip dijalankan dijalankan sebagai pengguna tertentu tanpa harus su ke pengguna itu sebelum skrip dijalankan. Juga skrip dijalankan dengan beberapa flag misalnya
./myscript.sh -e dev -v 1.9
Saya telah mencoba yang berikut
[ `whoami` = myuser ] || exec sudo -S su - myuser -c "bash `pwd`/`basename $0` [email protected]"
Tetapi flag -v yang seharusnya menjadi input ke skrip saya dimasukkan sebagai input ke su. Jadi mengeluh opsi yang tidak valid, apakah ada cara untuk memperbaiki hal di atas?
NB:Orang yang menjalankan skrip memiliki hak sudo.
Jawaban yang Diterima:
Pengguna saat ini sudah berada dalam variabel $USER
. Jadi yang Anda butuhkan hanyalah:
[ "$USER" = "myuser" ] || sudo -u myuser $0 "[email protected]"
Tidak perlu sudo su
, sudo
dapat melakukan semua yang Anda butuhkan. Anda juga tidak perlu pwd
atau basename
, $0
variabel sudah memiliki path lengkap ke skrip.
Perintah asli Anda memulai shell login (su -
). Jika itu benar-benar diperlukan (yang tampaknya aneh), Anda dapat melakukan:
[ "$USER" = "myuser" ] || sudo -iu myuser $0 "[email protected]"