GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie führe ich einen Befehl als bestimmter Benutzer in einem Init-Skript aus?

Wenn Sie start-stop-daemon

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

Für Init-Skripte im systemd-Stil ist es wirklich einfach. Sie fügen einfach ein User=im Abschnitt [Service] hinzu.

Hier ist ein Init-Skript, das ich für qbittorrent-nox unter CentOS 7 verwende:

[Unit]
Description=qbittorrent torrent server

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

[Install]
WantedBy=multi-user.target

Auf RHEL-Systemen der /etc/rc.d/init.d/functions Das Skript soll das bieten, was Sie möchten. Wenn Sie dies ganz oben in Ihrem Init-Skript angeben, werden alle seine Funktionen verfügbar.

Die speziell dafür bereitgestellte Funktion ist daemon . Wenn Sie beabsichtigen, es zum Starten eines Daemon-ähnlichen Programms zu verwenden, wäre eine einfache Verwendung:

daemon --user=username command

Wenn Ihnen das zu schwerfällig ist, gibt es runuser (siehe man runuser für vollständige Informationen; Einige Versionen benötigen möglicherweise -u vor dem Benutzernamen):

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

Statt sudo , versuche es

su - username command

Meiner Erfahrung nach sudo ist auf RHEL-Systemen nicht immer verfügbar, aber su ist, weil su ist Teil des Coreutils-Pakets, während sudo befindet sich im sudo-Paket.


Linux
  1. So erstellen Sie ein Skript eines Linux-Befehls

  2. Wie führe ich einen Befehl vor der Benutzeranmeldung unter Linux aus?

  3. Wie man ein Skript ausführt??

  4. Wie führe ich ein Skript als ein anderer Benutzer ohne Passwort aus?

  5. Führen Sie ein Shell-Skript als ein anderer Benutzer aus

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

So erstellen Sie Benutzer unter Linux (Befehl useradd)

So führen Sie einen Befehl für eine bestimmte Zeit in Linux aus

So führen Sie ein Python-Skript in PHP aus

So führen Sie ein Bash-Skript aus

Wie führe ich einen Befehl in einem Shell-Skript aus?