wie starte ich beim Booten ein Skript mit Root-Rechten?

wie starte ich beim Booten ein Skript mit Root-Rechten?

Ich habe es erfolglos mit systemctl und crontab versucht.

hier ist das Skript:

#!/bin/bash
cyberghostvpn --country-code AU --city Brisbane --connect

Rechte:

-rwxr-xr-x 1 pat pat 71 nov 28 13:04 ghoststart.sh

meine Crontab, die ich folgendermaßen ausgeführt habe:sudo crontab -e

@reboot sleep 120; /home/pat/Documents/cyberghost/ghoststart.sh

ich kann das Skript problemlos im Terminal ausführen:sudo sh ghoststart.sh

Syslog-Cron:

Nov 28 13:17:57 mrpotato cron[679]: (CRON) INFO (pidfile fd = 3)
Nov 28 13:17:57 mrpotato cron[679]: (CRON) INFO (Running @reboot jobs)
Nov 28 13:17:59 mrpotato CRON[726]: (root) CMD (sh /home/pat/Documents/cyberghost/ghoststart.sh)
Nov 28 13:24:04 mrpotato cron[658]: (CRON) INFO (pidfile fd = 3)
Nov 28 13:24:04 mrpotato cron[658]: (CRON) INFO (Running @reboot jobs)

scheint, als ob cron nach 13:24:04 aufgehört hat zu funktionieren, weil ich danach noch einen Versuch gemacht habe

Bearbeitung 2: basierend aufDasIch habe versucht

root@mrpotato:/var/spool/cron/crontabs# /bin/sh -c "(export PATH=/usr/bin:/bin; /home/pat/Documents/cyberghost/ghoststart.sh </dev/null)"
Prepare OpenVPN connection ...
Please Install "openvpn" first!

es gibt den gleichen Fehler, wenn ich kein Root bin, offensichtlich ist OpenVPN installiert

3. Bearbeitung:

wenn ich das mache, bekomme ich keine Fehlermeldung.

pat@mrpotato:~$ sudo /bin/sh -c "(export PATH=/usr/bin:/bin; /home/pat/Documents/cyberghost/ghoststart.sh </dev/null)"

aber wenn ich das mache, bekomme ich eins:

root@mrpotato:~# /bin/sh -c "(export PATH=/usr/bin:/bin; /home/pat/Documents/cyberghost/ghoststart.sh </dev/null)"

der Fehler ist:

Traceback (most recent call last):
  File "cyberghostvpn.py", line 580, in <module>
  File "cyberghostvpn.py", line 346, in main
  File "libs/config.py", line 45, in __init__
  File "libs/config.py", line 112, in readConfigFile
Exception: The config file "/home/root/.cyberghost/config.ini" does not exist!
[3845] Failed to execute script cyberghostvpn

config.ini existiert in/home/pat/.cyberghost/

cron muss das Skript als Root ausführen und nicht mit sudo … oder so ähnlich. Das Skript ruft die Datei vom laufenden Benutzer ab … falls das Sinn ergibt.

ich habe keine Ahnung, wie ich das lösen soll!

Antwort1

Ihr ghoststart.shSkript (oder das cyberghostvpndarin enthaltene Element) versucht, OpenVPN durch Aufrufen der openvpnausführbaren Datei zu starten. Diese ausführbare Datei wurde im $PATHSkript nicht gefunden. Verwenden Sie es command -v openvpnin einem Terminal, um den Pfad der ausführbaren Datei zu finden.

Wenn sich Ihre openvpnausführbare Datei in befindet /usr/sbin, können Sie Ihren Crontab-Zeitplan wie folgt schreiben:

@reboot sleep 120 && PATH="$PATH:/usr/sbin" /home/pat/Documents/cyberghost/ghoststart.sh

Ihre „dritte Bearbeitung“ zeigt auch an, dass das Tool nach einer Konfigurationsdatei im Home-Verzeichnis des Benutzers sucht, der das Tool startet. Sie sagen, Sie haben diese Datei im Home-Verzeichnis von patund nicht im Home-Verzeichnis von root.

Sie haben hier zwei Möglichkeiten:

  1. Verschieben Sie die Konfigurationsdatei dorthin, wo das Tool sie erwartet, oder
  2. Sagen Sie dem Werkzeug, wo HOMEes ist.

Die zweite Möglichkeit besteht darin, den Cron-Job so zu ändern, dass er

@reboot sleep 120 && HOME=/home/pat PATH="$PATH:/usr/sbin" /home/pat/Documents/cyberghost/ghoststart.sh

Antwort2

root@mrpotato:/var/spool/cron/crontabs# /bin/sh -c "(export PATH=/usr/bin:/bin;/home/pat/Documents/cyberghost/ghoststart.sh

Wo befindet sich Ihre OpenVPN-Binärdatei? Auf meinem Debian befindet sie sich in einem Verzeichnis, /usr/sbindas nicht Teil der PATH-Variable ist, die Sie an Ihr Skript übergeben haben. Dies erklärt den aufgetretenen Fehler.

verwandte Informationen