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 wird sudo. Unten sehen Sie ein eigenes Beispiel, mit /etc/rc.localdem ich zwei Überwachungsskripte starte.
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/home/xieerqi/bin/batmon.sh &
/home/xieerqi/bin/sh/temperature.sh &
exit 0
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:
bash -c "sleep 10;gksu /usr/bin/my_vpn_program"
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 pkexecstattdessen verwenden, und einige könnten sogar sagen pkexec, dass anstelle von empfohlen wird gksu.
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/sudoersDatei bearbeiten . WARNUNG : Es wird empfohlen, sudo visudodie Datei vom Terminal aus zu bearbeiten. Unten sehen Sie ein Beispiel dafür, wie ich dieselbe Einstellung mit dem pm-suspendBefehl verwende:
# Allow using pm-suspend for my user without password
my_username_here ALL = NOPASSWD: /usr/sbin/pm-suspend
Diese Zeile sollte an das /etc/sudoersDateiende angehängt und gespeichert werden. Beachten Sie, dass Sie immer noch sudooder gksuan den Anfang jedes von Ihnen eingerichteten Befehls anhängen müssen . Daher müssten Sie denselben bashBefehl verwenden, den ich zuvor gezeigt habe.
rc.local(wie unten unter anonym2 erläutert) und benötigen es nicht,sudowenn es sich um eine Befehlszeilen-App handelt. Alles, weil esrc.localbereits als Root ausgeführt wird, aber für GUI-Apps nicht funktioniert.