Ich habe eine GUI-Anwendung, die einen Daemon (in Python geschrieben) mit Superuser-Rechten aufrufen muss. Ich möchte dies tun, ohne den Benutzer nach einem Passwort zu fragen.
Da der Daemon ein Skript ist, kann ich das SUID-Bit nicht direkt setzen. Ich könnte dafür einen C-Wrapper schreiben, aber ich möchte das Rad lieber nicht neu erfinden, besonders wenn ein Fehler meinerseits dazu führen könnte, dass die Sicherheit des Systems ernsthaft gefährdet wird.
Normalerweise würde ich in dieser Situation eine Zeile in /etc/sudoers
hinzufügen die es Benutzern ermöglicht, den Daemon als root ohne Passwort auszuführen, indem sie die NOPASSWD-Direktive verwenden. Dies funktioniert problemlos über die Befehlszeile. Wenn ich dies jedoch über die GUI mache, wird ein pkexec
Dialog erscheint und fragt nach dem Passwort des Benutzers. Es scheint, dass unter Ubuntu sudo
aufgerufen wird von der GUI werden irgendwie von pkexec
abgefangen .
Gibt es eine saubere Möglichkeit, dies zu umgehen? Ich möchte mich wirklich lieber nicht mit den Problemen eines setuid-Skripts auseinandersetzen müssen.
Beste Antwort
Es ist unpassend, Folgendes zu sagen:„Es scheint, dass unter Ubuntu sudo
aufgerufen wird von der GUI werden irgendwie von pkexec
abgefangen „ . pkexec
hat nicht viel mit sudo
gemeinsam . Im Gegensatz zu sudo
, pkexec
gewährt keine Root-Berechtigung für einen ganzen Prozess, sondern ermöglicht eine feinere Kontrolle der zentralisierten Systemrichtlinie.
Wenn Sie nun eine GUI-Anwendung ausführen möchten, ohne von pkexec
nach einem Passwort gefragt zu werden , das ist nicht schwer zu tun. Nehmen wir zum Beispiel GParted . Wenn Sie es öffnen, sehen Sie das folgende Dialogfenster, das Sie nach einem Passwort fragt:
Klicken Sie auf Details und das Dialogfenster sieht nun so aus:
Von hier aus müssen Sie nur noch /usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy
Datei mit beispielsweise folgendem Befehl:
gksu gedit /usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy
und ändern Sie die folgenden Zeilen:
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin</allow_active>
mit den folgenden:
<allow_any>yes</allow_any>
<allow_inactive>yes</allow_inactive>
<allow_active>yes</allow_active>
Speichern Sie die Datei und schließen Sie sie. Als nächstes öffnen Sie GParted Sie werden nicht mehr nach einem Passwort gefragt.
Verwandte:Ist es mit Gedit oder der Befehlszeile möglich, jede vierte Zeile einer Textdatei zu ändern?