GNU/Linux >> Belajar Linux >  >> Linux

Jalankan skrip shell sebagai pengguna yang berbeda

Solusi 1:

Untuk menjalankan skrip Anda sebagai pengguna lain sebagai satu perintah, jalankan:

/bin/su -c "/path/to/backup_db.sh /tmp/test" - postgres

Breaking it down:
 /bin/su : switch user
 -c "/path/to..." : command to run
 - : option to su, make it a login session (source profile for the user)
 postgres : user to become

Saya merekomendasikan untuk selalu menggunakan jalur lengkap dalam skrip seperti ini - Anda tidak dapat selalu menjamin bahwa Anda akan berada di direktori yang benar saat su (mungkin seseorang mengubah homedir pada Anda, siapa tahu). Saya juga selalu menggunakan path lengkap ke su (/bin/su) karena saya paranoid. Ada kemungkinan seseorang dapat mengedit jalur Anda dan menyebabkan Anda menggunakan versi su yang telah disusupi.

Solusi 2:

Jika pengguna target yang dijalankan memiliki nologin shelll yang ditentukan, maka Anda dapat menggunakan opsi -s untuk menentukan shell:

/bin/su -s /bin/bash -c '/path/to/your/script' testuser

Lihat pertanyaan berikut:jalankan skrip sebagai pengguna yang tidak memiliki shell nologin

Solusi 3:

Untuk mengotomatiskan ini sesuai jadwal, Anda dapat meletakkannya di crontab pengguna. Pekerjaan Cron tidak akan mendapatkan lingkungan penuh, tetapi mungkin lebih baik untuk meletakkan semua variabel env yang Anda butuhkan dalam skrip itu sendiri.

Untuk mengedit crontab pengguna:

sudo crontab -u postgres -e

Solusi 4:

Ini harus menjadi bacaan yang informatif -- setuid pada skrip shell

Jika Anda menjalankan su dengan "- username " urutan argumen, itu akan membuat shell login bagi pengguna untuk memberikan lingkungan yang sama dengan pengguna. Biasanya, digunakan untuk mengeksekusi skrip Anda dengan cepat dengan lingkungan rumah Anda dari login yang berbeda.

Solusi 5:

Coba halaman su manual:

su -c script_run_as_postgres.sh - postgres

Sebagai alternatif, Anda dapat menggunakan sudo untuk memungkinkan Anda menjalankan perintah itu saja sebagai postgres tanpa kata sandi. Namun, dibutuhkan beberapa pengaturan di /etc/sudoers Anda.


Linux
  1. Jalankan Script Dengan Argumen Sebagai Pengguna?

  2. Bagaimana Cara Menjalankan Script Shell Di Latar Belakang?

  3. Cara menjalankan skrip Python dari shell

  1. Bagaimana Anda menjalankan skrip saat login di * nix?

  2. Cara menjalankan skrip shell saat startup

  3. Jalankan skrip shell di terminal baru dari terminal saat ini

  1. UNIX / Linux :Apa itu Shell? Apa Shells yang berbeda?

  2. Menjalankan skrip shell secara paralel

  3. shell berbeda untuk pengguna root dan non-root