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.local
dem 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 pkexec
stattdessen 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/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 dem pm-suspend
Befehl 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/sudoers
Dateiende angehängt und gespeichert werden. Beachten Sie, dass Sie immer noch sudo
oder gksu
an den Anfang jedes von Ihnen eingerichteten Befehls anhängen müssen . Daher müssten Sie denselben bash
Befehl verwenden, den ich zuvor gezeigt habe.
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.