Ich muss ein Skript und eine Binärdatei /usr/bin
beim Start mit sudo / root-Berechtigungen starten . Ich habe viele Anleitungen aus diesem Forum ausprobiert, aber nichts hat funktioniert ( rc.local
und systemd
Stil, Upstart) - vielleicht mache ich etwas falsch. Mein Betriebssystem ist Ubuntu GNOME 16.10.
Das Skript wäre ungefähr so
#!/bin/bash
sudo ./usr/bin/myprogram
sudo bash /home/USER/script.bash
Sowohl das Skript als auch das Programm sind ausführbar. Ich weiß nur nicht, wie ich sie beim Start mit sudo optimal starten kann.
Bitte sei höflich. Ich bin ein neuer Benutzer.
rc.local
(wie unten unter anonym2 erläutert) und benötigen es nicht,sudo
wenn es sich um eine Befehlszeilen-App handelt. Alles, weil esrc.local
bereits als Root ausgeführt wird, aber für GUI-Apps nicht funktioniert.Antworten:
Für Befehlszeilenanwendungen, für die keine grafische Benutzeroberfläche erforderlich ist, reicht es aus, den Aufruf an sie zu stellen
/etc/rc.local
, der bereits als root ausgeführt wird und daher nicht benötigt wirdsudo
. Unten sehen Sie ein eigenes Beispiel, mit/etc/rc.local
dem ich zwei Überwachungsskripte starte.Für GUI-Anwendungen müssten Sie einen anderen Ansatz wählen. Sie müssen die Startup Applications-App öffnen und den folgenden Befehl hinzufügen:
Dies gibt der GUI ausreichend Zeit zum Starten, 10 Sekunden, öffnet dann das Passwortdialogfeld und startet Ihren Befehl, wenn Sie das Passwort richtig eingeben. Tatsächlich ist dies ein Mini-Bash-Skript. Sie können
pkexec
stattdessen verwenden, und einige könnten sogar sagenpkexec
, dass anstelle von empfohlen wirdgksu
.Wenn Sie nicht jedes Mal ein Kennwort eingeben möchten, können Sie Ihrem Benutzer alternativ erlauben, diesen bestimmten Befehl mit Root-Rechten ohne Authentifizierung auszuführen. Dazu müssen Sie die
/etc/sudoers
Datei bearbeiten . WARNUNG : Es wird empfohlen,sudo visudo
die Datei vom Terminal aus zu bearbeiten. Unten sehen Sie ein Beispiel dafür, wie ich dieselbe Einstellung mit dempm-suspend
Befehl verwende:Diese Zeile sollte an das
/etc/sudoers
Dateiende angehängt und gespeichert werden. Beachten Sie, dass Sie immer nochsudo
odergksu
an den Anfang jedes von Ihnen eingerichteten Befehls anhängen müssen . Daher müssten Sie denselbenbash
Befehl verwenden, den ich zuvor gezeigt habe.quelle
gksu
in Ubuntu 18 entfernt und/etc/rc.local
bei Verwendung von systemd nicht aufgerufen wird, sondern mitsudo systemctl enable rc-local
Die Lösung ist so einfach, dass Sie sie verpasst haben. :) Da rc.local von root ausgeführt wird, sind die Sudos in Ihrer Datei völlig unnötig.
Mit anderen Worten, setzen Sie es wie vorgeschlagen in rc.local ein, aber lassen Sie die
sudo
s in Ihrem Skript weg . Sie sind völlig unnötig, da rc.local bereits als root ausgeführt wird.Hoffe das hilft!
quelle
Verwenden Sie eine
crontab
Option, um Ihr Skript nach dem Neustart auszuführen.Sie können dies tun, indem Sie
@reboot
Code in cron hinzufügenÖffnen Sie crontab vom Root-Benutzer:
Fügen Sie den nächsten Datensatz unten hinzu:
Das wird machen was du willst.
quelle