GNU/Linux >> Belajar Linux >  >> Linux

Jalankan Script Dengan Argumen Sebagai Pengguna?

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]"

Linux
  1. Jalankan skrip dengan rc.local:skrip berfungsi, tetapi tidak saat boot

  2. Ubuntu - Jalankan perintah saat start-up dengan sudo

  3. Bagaimana cara menjalankan perintah sebagai pengguna tertentu dalam skrip init?

  1. Izin ditolak dengan bash.sh untuk menjalankan cron

  2. Jalankan kembali perintah sebelumnya dengan argumen yang berbeda

  3. Jalankan bagian dari skrip bash sebagai pengguna yang berbeda

  1. Shell Script Wrapper Untuk Mencegah Menjalankan Perintah Tanpa Argumen?

  2. Bagaimana cara menjalankan sebagian skrip dengan hak istimewa yang dikurangi?

  3. Periksa kata sandi pengguna dengan skrip shell