GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menjalankan perintah sebagai pengguna tertentu dalam skrip init?

Jika Anda memiliki start-stop-daemon

start-stop-daemon --start --quiet -u username -g usergroup --exec command ...

Untuk skrip init gaya systemd sangat mudah. Anda cukup menambahkan User=di bagian [Layanan].

Ini skrip init yang saya gunakan untuk qbittorrent-nox di CentOS 7:

[Unit]
Description=qbittorrent torrent server

[Service]
User=<username>
ExecStart=/usr/bin/qbittorrent-nox
Restart=on-abort

[Install]
WantedBy=multi-user.target

Pada sistem RHEL, /etc/rc.d/init.d/functions skrip dimaksudkan untuk memberikan yang serupa dengan yang Anda inginkan. Jika Anda sumbernya di bagian atas skrip init Anda, semua fungsinya akan tersedia.

Fungsi spesifik yang disediakan untuk membantu hal ini adalah daemon . Jika Anda bermaksud menggunakannya untuk memulai program mirip daemon, penggunaan sederhananya adalah:

daemon --user=username command

Jika itu terlalu berat untuk apa yang Anda butuhkan, ada runuser (lihat man runuser untuk info lengkap; beberapa versi mungkin memerlukan -u sebelum nama pengguna):

/sbin/runuser username -s /bin/bash -c "command(s) to run as user username"

Alih-alih sudo , coba

su - username command

Dalam pengalaman saya, sudo tidak selalu tersedia di sistem RHEL, tetapi su adalah, karena su adalah bagian dari paket coreutils sedangkan sudo ada di dalam paket sudo.


Linux
  1. Cara Mengubah Nama Pengguna di Linux

  2. Bagaimana Menjalankan Skrip??

  3. Jalankan bagian dari skrip bash sebagai pengguna yang berbeda

  1. Cara Membuat Script Perintah Linux

  2. CentOS / RHEL :Bagaimana menemukan pengguna mana yang menjalankan perintah tertentu?

  3. Cara menggunakan Sudo untuk mengizinkan pengguna non-root menjalankan perintah tertentu

  1. Cara menonaktifkan perintah khusus untuk pengguna tertentu di Linux

  2. Bagaimana cara menjalankan skrip sebagai pengguna lain tanpa kata sandi?

  3. Bagaimana saya bisa menjalankan fungsi dari skrip di baris perintah?