GNU/Linux >> Belajar Linux >  >> Linux

Jalankan bagian dari skrip bash sebagai pengguna yang berbeda

Gunakan perintah sudo dalam skrip.

Dalam bentuk:

sudo -u username command

perintah sudo menjalankan perintah sebagai pengguna nama pengguna .

Jika skrip dijalankan sebagai root, saya rasa itu tidak akan meminta kata sandi. Jika tidak, artikel ini membahas cara menggunakan sudo dengan kata sandi dalam satu baris perintah?, dan artikel ini membahas cara menggunakan sudo tanpa kata sandi?


Jawaban ini bagus, tetapi saran serverfault sedikit berbahaya - akan memungkinkan siapa pun menjalankan apa pun sebagai root! Jadi saya memposting di sini karena saya tidak dapat memformat komentar.

Saya akan merekomendasikan menggunakan visudo untuk memberikan izin yang Anda butuhkan setepat mungkin. Ketik visudo dan tambahkan baris seperti:

username hostname = NOPASSWD: /full/path/to/command1, full/path/to/command2

Jika Anda perlu menjalankan hal yang sama ini di banyak host, Anda dapat membukanya dengan:

username ALL = NOPASSWD: /full/path/to/command1, full/path/to/command2

Tapi saya **tidak* akan menggunakan:

username ALL=(ALL) NOPASSWD: ALL

atau nama pengguna nama host =SEMUA

Halaman manual sudoer memiliki banyak detail mengerikan


# Saya=suka:

#test if running bash as a different user works
sudo -u nobody bash -c : && RUNAS="sudo -u nobody"

echo 1: $USER

#Runs bash with commands between '_' as nobody if possible
$RUNAS bash<<_
echo 2: \$USER
_

echo 3: $USER

# ./run

1: root
2: nobody
3: root

Linux
  1. Bagaimana Cara Membuat Skrip A Sebagai Root Secara Retroaktif?

  2. Bash Script - Cara Membaca Input Pengguna

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

  1. Jalankan file teks sebagai perintah di Bash

  2. Menambahkan ke $PYTHONPATH dengan skrip bash

  3. Jalankan skrip bash setelah login

  1. Jalankan container di Linux tanpa Sudo di Podman

  2. Jalankan perintah bash pada pipa jenkins

  3. Apa perbedaan antara root dan sudo?