Wie bekomme ich eine GUI Sudo Passwort Eingabeaufforderung ohne Befehlszeile?

10

Derzeit muss ich für alle meine Befehle, für die Root-Zugriff erforderlich ist, diese über eine Befehlszeile eingeben.

Ich möchte, dass die GUI mich auffordert, mein Passwort einzugeben, wenn sudo erforderlich ist, anstatt die Befehle über die Befehlszeile eingeben zu müssen.

Gibt es eine Möglichkeit, dies zu aktivieren? Zuvor hatte eine Version von Ubuntu Desktop diese Funktion sofort verfügbar.

Diese Version von Ubuntu (die ich jetzt verwende) habe ich von einer Serverinstallation aktualisiert.

Ich werde hinzufügen, mein Benutzerkonto ist bereits zur Sudo-Gruppe hinzugefügt. Somit kann ich Befehle wie sudo geditoder ausführen, sudo apt-getaber ich kann keine Software im Ubuntu Software Center installieren.

Sean
quelle

Antworten:

10

TL; DR: Versuchen Sie, die Pakete policykit-1und policykit-1-gnomezu installieren .

Sie benötigen wahrscheinlich ein Polkit (auch bekannt als PolicyKit).

Die meisten Dienstprogramme zur grafischen Systemverwaltung in Ubuntu, einschließlich des Software Centers, können normalerweise ohne sudooder etwas Ähnliches ausgeführt werden. Sie führen sie genauso aus, wie Sie ein Programm ausführen würden.

Wenn es an der Zeit ist, eine Aufgabe auszuführen, für die Root-Rechte erforderlich sind, verwenden sie polkit , um die erforderlichen Aktionen auszuführen. polkit ist ein von sudo separater Mechanismus, mit dem Administratoren Aktionen als root ausführen können. Es ist auf Ubuntu-Desktop-Systemen installiert, gehört jedoch standardmäßig nicht zu den Ubuntu Server-Installationen.

Daher ist das normale Verhalten des Software Centers, dass Sie es einfach aufrufen können, da software-centerSie zu diesem Zeitpunkt nicht zur Authentifizierung aufgefordert werden. Wenn Sie es jedoch anweisen, Software zu installieren oder zu entfernen, werden Sie (grafisch) zur Authentifizierung aufgefordert.

Aus Ihrer Beschreibung geht hervor, dass Ihr System als Ubuntu Server-System ohne GUI gestartet wurde und Sie dann eine GUI installiert haben. Wahrscheinlich wurden die Pakete policykit-1Installieren Sie das Policykit-1 und policykit-1-gnomeInstallieren Sie policykit-1-gnome nicht installiert. Wenn Sie das installieren, wird polkit höchstwahrscheinlich für Software Center und andere solche Dienstprogramme funktionieren.

sudo apt-get update
sudo apt-get install policykit-1 policykit-1-gnome

Dann sollten Sie einfach laufen können:

software-center

(Oder wählen Sie das Software Center grafisch aus, wie es in der von Ihnen installierten Desktop-Umgebung vorgesehen ist.)

Wenn Sie ein voll funktionsfähiges Ubuntu-Desktopsystem wünschen, empfehle ich, das Metapaket für jede "Variante" von Ubuntu zu installieren, in die Sie Ihr System verwandeln möchten. Wenn Sie ein normales Ubuntu-Desktop-System möchten, installieren Sie grundsätzlich Ubuntu-DesktopInstallieren Sie Ubuntu-Desktop .

sudo apt-get update
sudo apt-get install ubuntu-desktop

Dies sollte die verschiedenen Lücken füllen, z. B. das Fehlen eines Polkits, die mit der Installation einer minimaleren GUI auf Ihrem Serversystem einhergehen. Wenn Sie jedoch eine minimalere Benutzeroberfläche bevorzugen, können Sie diese Polkit-Pakete einfach installieren.

Weitere Informationen finden Sie unter Wie führen Sie Ubuntu Server mit einer grafischen Benutzeroberfläche aus?

sudo mit grafischer Authentifizierung.

Wenn Sie wirklich Ausführungsbefehle als root benötigen, aber einen grafischen Authentifizierungsdialog erhalten, suchen Sie gksudo( odergksu ). Dies wird durch das gksu-Installieren Sie gksu Paket bereitgestellt. Es ist ein grafisches Frontend für sudo.

Wird normalerweise gksudoverwendet, um grafische Anwendungen als Root auszuführen (oder als ein anderer Benutzer neben dem Benutzer, der sie startet). Sie können es aber auch verwenden, um nicht grafische Befehle auszuführen - vorausgesetzt, die Befehle können mit ausgeführt werden sudo.

Sie können gksudovon einem Terminal aus laufen , müssen es aber nicht. Sie können es über das Dialogfeld Alt+ F2(Befehl ausführen) ausführen oder in die Exec=Zeile einer .desktopDatei einfügen (oder auf eine andere Art und Weise, wie Sie grafische Programme ausführen).

Beachten Sie, dass Sie die Verwendung gksudovon grafischen Anwendungen als Root in Betracht ziehen sollten, auch wenn Sie sie von einem Terminal aus ausführen, da Befehle wie " sudo ...Wo ...ist eine grafische Anwendung?" Die anwendungsspezifischen Konfigurationen der Nicht-Root-Benutzer, die sie ausführen, tatsächlich beschädigen können. (Zum Glück ist dies reparabel.) Ist sudo geditbesonders berüchtigt.

Weitere Informationen zum Problem mit sudofür grafische Anwendungen und was stattdessen zu tun ist, finden Sie unter:

Es gibt auch eine Polkit-basierte grafische Methode ... für nicht grafische Befehle.

gksudofunktioniert gut zum Ausführen von grafischen und nicht grafischen Programmen. Sie sollten das wahrscheinlich verwenden.

Eine Alternative ist die Verwendung von Polkit anstelle von sudound nur für nicht grafische Programme pkexec.

Wenn Sie beispielsweise ausführen pkexec touch /root/foo.txt, wird ein grafisches Authentifizierungsdialogfeld angezeigt. Wenn die Authentifizierung erfolgreich ist, touch /root/foo.txtwird sie ausgeführt und im Ordner erstellt ( oder aktualisiert ) .foo.txt/root

  • pkexecverwendet einen nicht grafischen Dialog, für den ein Terminal erforderlich ist, falls kein grafischer Dialog erstellt werden kann. Dies ist jedoch unwahrscheinlich, wenn Sie es über eine Einrichtung ausführen, die von Ihrer grafischen Shell oder Desktop-Umgebung bereitgestellt wird.
  • Warum funktioniert pkexecnur für nicht- grafische Programme? Tatsächlich werden auch grafische Programme ausgeführt, jedoch nur, wenn polkit speziell dafür konfiguriert wurde - was normalerweise nicht der Fall ist. Siehe man pkexec(und die Upstream-Version mit Screenshots ), diese und jene Antwort für einige Details, wenn Sie interessiert sind.

sudoPolkit (einige technische Details, nur wenn Sie interessiert sind)

Ein neues gksu/ gksudowird Polkit verwenden, anstatt sudoseine Arbeit zu erledigen , obwohl diese Version nicht weit verbreitet ist. Ich spreche es hauptsächlich an, um die READMEDatei in ihrem Quellcode (geschrieben von Gustavo Noronha Silva) zu empfehlen , der die wichtigen Unterschiede zwischen sudound polkit erklärt. Um es kurz zu zitieren:

PolicyKit löst das Problem, dass eine Anwendung höhere Berechtigungen benötigt, indem Funktionen bereitgestellt werden, mit denen sich Benutzer authentifizieren können, und Anwendungen, um Authentifizierungs- und Autorisierungsinformationen zu überprüfen. Die Anwendung muss so strukturiert sein, dass alle privilegierten Operationen von einem (vorzugsweise) kleinen D-Bus-Dienst ausgeführt werden, der vom nichtprivilegierten Code befohlen wird. Alle "Aktionen", die ausgeführt werden, benötigen eine ordnungsgemäße Autorisierung, die über Policykit ausgeführt wird.

4. Warum gksu pflegen?

Dies macht gksu im Wesentlichen unnötig, da Anwendungen nicht mehr als privilegierter Benutzer ausgeführt werden müssen und die Benutzerauthentifizierung durch den Auth Agent von PolicyKit erfolgt. Aber Anwendungen müssen überarbeitet werden, um diese neue Struktur zu übernehmen, und es gibt einige Fälle, in denen Sie tatsächlich Programme als Root ausführen möchten.

Diese Probleme liegen der Situation zugrunde, in der Sie sich befinden:

  • Das Software Center ist so konzipiert, dass Polkit zur Erhöhung von Berechtigungen verwendet wird, sodass nur bestimmte Aktionen als Root ausgeführt werden müssen. Dafür benötigt es ein Polkit, das auf Ihrem System fehlte (oder kaputt war).
  • Da es für die Verwendung von Polkit ausgelegt ist, gibt es keinen vorgefertigten Starter, um das Software Center als Root zu starten. polkit macht es meistens überflüssig, grafische Verwaltungstools als Root auszuführen.
  • Aber manchmal müssen Sie wirklich ein grafisches Programm als root ausführen. In diesem Fall können Sie gksu/ verwenden gksudo.
    (... die möglicherweise hinter den Kulissen Polkit verwenden - aber das gksudoderzeit in Ubuntu verwendete ist das traditionelle, das verwendet wird sudo).
Eliah Kagan
quelle
1
Hallo Eliah, ja, es war ein Server ohne GUI und ich habe gerade Ubuntu GUI ausprobiert. Ich habe den Befehl sudo apt-get install ubuntu-desktop ausgeführt. Ich bin mir nicht sicher, ob das Policy Kit installiert ist. Ich werde trotzdem versuchen, es zu installieren. Derzeit wird ein Upgrade von 12.04 auf 14.04 durchgeführt.
Sean
Ich bin auf eine Situation gestoßen, in der ich eine GUI-Anwendung habe, die ich wie gewohnt ausführen möchte (nicht root), die jedoch nur von einer seriellen Schnittstelle lesen muss, die root gehört. Die Unfähigkeit, diesem Programm nur ein einziges Privileg zu gewähren, ist wirklich ärgerlich (mit anderen Worten, ich möchte ein vollständiges Objektfähigkeitssystem).
CMCDragonkai
3
Bitte nicht, dass gksuveraltet und von Ubuntu 18.04
Nathan F.
5

Eine bequeme Möglichkeit besteht darin, eine dedizierte .desktopDatei zu erstellen oder Ihre Befehle zu einer vorhandenen hinzuzufügen und Ihr Passwort über die GUI (gksu) abzufragen. Im folgenden Beispiel füge ich dem Gedit-Starter den Befehl zum Ausführen von Gedit und Software Center mit sudo-Berechtigungen hinzu. Sie müssen gksuinstalliert sein, um dieses Setup verwenden zu können:sudo apt-get install gksu

  1. Kopieren Sie die Datei Gedit .desktop file in/ usr / share / applications / to~ / .local / share / applications`:

    cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
    

    und öffne es zur Bearbeitung (ziehe es auf ein geöffnetes gedit-Fenster)

  2. Suchen Sie nach der Zeile: Actions = Window; Document;

  3. Fügen Sie der Zeile die Namen Ihrer Befehle hinzu (dies sind nicht die Namen, die Sie in Ihrer Benutzeroberfläche sehen, sondern nur als interne Referenz in der Datei verwenden).

    Actions=Window;Document;gedit;Ubuntu Software Center;
    
  4. Fügen Sie die entsprechenden Abschnitte am Ende der Datei hinzu:

    [Desktop Action gedit]
    Name=Gedit  (with gksu)
    Exec=gksudo gedit
    OnlyShowIn=Unity;
    
    [Desktop Action Ubuntu Software Center]
    Name=Ubuntu Software Center (with gksu)
    Exec=gksudo /usr/bin/software-center
    OnlyShowIn=Unity;
    
  5. Schließen Sie die Datei und ziehen Sie sie auf den Launcher

Jetzt können Sie gedit und Software Center mit sudo-Berechtigungen ausführen:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Jacob Vlijm
quelle
Tatsächlich. Ich habe nichts dagegen. Der Grund, warum ich USC kommentiert habe, ist, dass ein Großteil der Frage darin besteht, wie das OP sein System , das aus einer Serverinstallation erstellt wurde , in Bezug auf die grafische Authentifizierung für Verwaltungsaufgaben wie ein normales Ubuntu-Desktopsystem funktionieren lassen kann. Meine Antwort konzentriert sich darauf und erklärt die Allgemeinheit der Ausführung von Programmen als Root grafisch. Dabei wird die Mechanik von gksu/ überflogen gksudo. Ihre Antwort ist also sowohl gut als auch notwendig! Ich hoffe nur, dass das OP auch Polkit installiert / repariert, da ich denke, dass das Betriebssystem so funktioniert, wie sie es wollen.
Eliah Kagan