Hmm... Ich habe mal gerade einen Test auf Fedora 25 gemacht. "pkexec --version" zeigt 0.113 und funktioniert auch nicht auf der Konsole, gleiche Fehlermeldung wie oben. Ebenso funktioniert es nicht auf anderen X Servern.TomL hat geschrieben:04.08.2017 22:26:01Ich glaube, die Quelle des Problems ist nicht das Polkit, auch wenn das Polkit jetzt diesen Effekt zeigt. Das Problem liegt eher bei Debian, weil sich die Entwickler entschlossen haben, sogar bei Stretch immer noch ein Polkit einzusetzen, was schon bei Jessie alt war... und zwar immer noch die Version 0.105.
[...] Egal... das TTY-Problem besteht aktuell in Debian
Um docker zu starten, braucht der user root-Rechte. Das geht z.B. auf debian mit su und root-Paßwort, und z.B. auf Ubuntu mit sudo und User-Paßwort. Weder su noch sudo funktioniert von Haus aus auf beiden Systemen, nur entweder-oder.TomL hat geschrieben:04.08.2017 22:26:01Allerdings versteh ich nicht,warum Du darauf bestehst, dass der User sein Password eingeben muss... denn Du wirst ihm ja wohl kein root-PWD geben.
Mein Skript soll auf beliebigen Systemen laufen können. Für gewöhnlich hat der User ein Paßwort, um root-Rechte zu bekommen, entweder für su oder für sudo. (Irgendwelche Firmenarbeitsplätze mal ausgenommen).TomL hat geschrieben:04.08.2017 22:26:01Ich würde die betroffenen User explizit in eine Gruppe (nicht sudo!) eintragen und die Gruppe via Polkit ohne PWD-Abfrage berechtigen. Und alle User, die nicht in der Gruppe enthalten sind, würde ich gleich am Anfang des Scripts abschmettern, so dass erst gar keine PWD-Abfrage kommt, die einen Fehler produziert.
Das System erst umzukonfigurieren, damit mein Skript starten kann, kann/will ich von beliebigen Usern nicht verlangen. Ich habe (für mich) den Anspruch, daß Programme "einfach funktionieren" sollen, ohne daß man erst etwas schrauben muß.
Es scheint keine allgemeingültige Lösung für eine Paßwortabfrage zu geben, um root-Rechte zu bekommen.
Ich gehe jetzt nach "Wahrscheinlichkeitsschätzung": Ist der User in Gruppe sudo, darf er wahrscheinlich "sudo docker" ausführen, und ich verwende im Skript sudo.
Ist er nicht in der Gruppe sudo, verwende ich su. Ein möglicher Eintrag in /etc/sudoers für docker kann nicht berücksichtigt werden, ist einfach nicht feststellbar, nicht einmal mit sudo -l.
Außerdem testet das Skript, ob docker ohne Paßwort (einmal mit, einmal ohne sudo) starten kann. Falls ja, gibt es keine Paßwortabfrage.
Damit dürfte ich hoffentlich >95% aller su/sudo-Konfigurationen korrekt einschätzen.
Wo diese allgemeine Einschätzung nicht stimmt, kann der User über eine Option zwischen pkexec/su/sudo/gksu/gksudo/kdesu/kdesudo/lxsu/lxsudo wählen. (Vergleiche xkcd: Standards )
Damit beherzige ich jetzt auch heisenbergs Empfehlung:
Darüber hinaus arbeite ich an einem Update, in dem das Skript von root gestartet werden darf, und der "echte" unprivilegierte User mit $(logname), $SUDO_USER und $PKEXEC_USER ermittelt wird, damit der die unprivilegierten Befehle ausführt.heisenberg hat geschrieben:Wer wenige Kenntnisse hat, der wird in seinem eigenen Interesse eine Mainstream-Distri haben. Wer etwas Extravagantes hat, bei dem kann man etwas mehr Wissen voraussetzen. ( Und wer eine Fortgeschrittenen-Distri als Anfänger benutzt, der hat Pech gehabt, bzw. muss das harte Brot kauen, was er sich selbst vorgesetzt hat. )
Für die Mainstream-Distris kann man Fallunterscheidungen einbauen. Dem Rest kann man zumuten, dass Sie entweder das Skript selbst als root ausführen sollen oder auf Verdacht testweise zwei Abfragen beantworten sollen.
Was für ein Aufwand, um einen einzelnen Befehl als root ausführen zu dürfen ... Würde die pkexec-Paßwortabfrage auch außerhalb von DISPLAY=:0 funktionieren, wäre ich sofort ein begeisterter polkit-Fan! Dann könnte ich auf den su/sudo/gksu/gksudo/kdesu/kdesudo/lxsu/lxsudo/$nochmehr-Urwald verzichten.