
Ich arbeite an einem Skript für den Benutzer Bob, dessen relevante Teile unten gezeigt werden. Das Problem, das ich habe, ist, dass Zenity funktioniert, wenn ich diesen Cronjob unter dem Benutzer Bob einstelle, Shutdown jedoch nicht. Und wenn ich es unter Root einstelle, funktioniert Shutdown zwar, aber Zenity ist auf der Konsole nicht sichtbar.
#!/bin/bash
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u Bob gnome-session)/environ)";
someValue=`DISPLAY=:0.0 zenity --text="tell me your value" --entry`
...
...
/sbin/shutdown -h "now"
Ich habe auch versucht, als Root zu arbeiten, mit „su“ zu Bob zu gelangen, um Zenity zu erhalten, und dann zum Herunterfahren wieder zu Root zurückzukehren, aber das hat nicht funktioniert.
Gibt es eine Möglichkeit, dies zu tun?
Andere Information
Das Betriebssystem ist Linux Mint und Bob ist der einzige Benutzer der Maschine
Antwort1
Nicht privilegierte Benutzer können eine Maschine nicht über die Befehlszeile herunterfahren. Wenn Sie unbedingt als Bob das Shutdown-Befehlswort senden müssen, können Sie ihn mit zu sudoers hinzufügen visudo
.
sudo visudo
Fügen Sie die folgende Zeile hinzu:
bob ALL = (root) NOPASSWD: /sbin/shutdown -h "now"
Datei speichern. Dann kannst du su
als Bob den Befehl testen:
sudo /sbin/shutdown -h "now"