Ich brauche ein Äquivalent von gksu im 18.04

22

Ich habe viele Threads darüber gelesen, dass gksu aus vielen Linux-Versionen entfernt wird, einschließlich Ubuntu 18.04. Viele sagen, dass gksu ein Gräuel ist und kein Benutzer jemals so etwas benutzen sollte. Ich habe 2 Beispiele, in denen ich meines Wissens etwas haben muss, das es mir erlaubt, als root zu laufen (nicht nur zum Bearbeiten von Dateien).

Zunächst muss mysql erst gestartet werden, nachdem ein verschlüsselter Ordner im GUI-Befehl geöffnet wurde. Dies bedeutet, dass ein Skript vom Verschlüsselungssystem ausgeführt wird, das den mysql-Dienst startet. Das muss als root gemacht werden, also benutze ich gksu in dem Startskript, das mich nach einem Passwort fragt. Wie kann ich einen Dienst von einem GUI-System aus starten?

Ich führe auch Ubuntu-Systemsicherungen als root aus, da sonst viele Systemdateien nicht gesichert werden können. Die Desktop-Datei verwendet also gksu, um die Sicherung zu starten.

pkexec sieht kompliziert aus und benötigt Richtliniendateien. Ist das die einzige Alternative und wenn ja, warum ist sie sicherer?

Andere Antworten auf ähnliche Fragen scheinen sich nicht mit einzelnen Problemen zu befassen, die Menschen jetzt haben, da gksu nicht mehr (oder schwerer zu finden ist ...). Ich denke, solche Fragen von Nicht-Experten würden von detaillierteren Antworten profitieren. Ich habe jetzt welche und möchte daher meine eigene Frage beantworten.

pastim
quelle
Arbeitet pkexecfür Sie statt gksu?
Thomas Ward
@karel stimmte zu, obwohl in diesem Beitrag nicht klar angegeben ist, dass es sich um "Ersatz" handelt pkexec. (Sie müssen danach jagen)
Thomas Ward
2
Sie können auch versuchen, sudo -H GUI-programWayland zu verwenden, und wenn es diesen Link gibt, der nützlich sein könnte, gibt es Problemumgehungen, wenn Sie ein GUI-Tool haben, das für Sie gut funktioniert und erhöhte Berechtigungen benötigt.
Sudodus
3
Dies ist ein umstrittenes Thema, aber grafische Anwendungen als Root auszuführen ist ein Sicherheitsrisiko. Obwohl Sie und viele andere möglicherweise nicht damit einverstanden sind, wird von Ubuntu und vielen Distributionen davon abgeraten, grafische Apps als Root auszuführen. Ubuntu ist dabei, alternative Lösungen, pkexec und andere Richtlinien zu schreiben. Sie können einen Fehlerbericht einreichen, und die Entwickler arbeiten an einer Lösung für Programme, die sie für erforderlich halten, z. B. Paketmanager. Dies ist komplex, da es sich um X und Wayland handelt. Verwenden Sie alternativ nicht grafische Apps oder schreiben Sie Ihre eigenen. Die Verschlüsselung erfordert keine gui
Panther
Ich benutze den gnome-encfs-manager, der eine Benutzeroberfläche zum Mounten verschlüsselter Ordner bietet. Es sieht vor, dass ein Skript ausgeführt wird, wenn das Laufwerk gemountet wird. In diesem Skript muss ich mysql starten. Wie kann ich das sonst noch machen? Was Wayland betrifft, ist es aus der Sicht eines normalen Desktop-Benutzers zu Hause lächerlich, keine synaptischen oder geteilten Guis zuzulassen. Sie sind von unschätzbarem Wert. Systeme können so sicher sein, dass niemand sie verwenden möchte - es gibt ein Gleichgewicht, und in diesem speziellen Fall (wayland) muss der Benutzer Recht haben.
Pastim

Antworten:

8

Ich weiß, dass es angeblich anderswo Antworten darauf gibt, aber ich habe keine klar und einfach genug gefunden, um dieses Problem zu lösen. Also habe ich mich an vielen Stellen umgesehen und mir das ausgedacht. Ich verstehe immer noch nicht, warum die Linux-Community beschlossen hat, uns einfachen Desktop-Benutzern das Leben so schwer zu machen (und ich habe versucht, viele Erklärungen zu verstehen), aber das ist das Leben. Ich benutze die GUI für fast alles und benutze nur das Terminalfenster, wenn es nötig ist. Soweit ich Lösungen mit sudo-Optionen beurteilen kann, hilft das nicht weiter. Also habe ich .desktopDateien und Skripte, die alle Jobs erledigen, die ich regelmäßig benutze.

Es gibt zwei grundlegende Lösungen.

1. Neu installieren gksu

Diese Lösung kann oder kann nicht dauern. Anti-Gksu-Techniker könnten einen Weg finden, dies zu stoppen. In der Zwischenzeit laden Sie 2 .debDateien von libgksu (x64) und gksu (x64) herunter . Installieren Sie libgksu2 und dann gksu mit gdebi oder dem Installationsprogramm, das Sie verwenden möchten. Das hat bei mir funktioniert.

2. Verwenden Sie pkexec

Als (hoffentlich) längerfristige Lösung gelang es mir, pkexec für die benötigten Tools zum Laufen zu bringen.

  1. So starten Sie einen Dienst aus einem Skript. Es stellt sich heraus, dass weder gksu noch pkexec benötigt werden. Nur start service xyzund es wird nach Ihrem Passwort gefragt.

  2. Informationen zum Bearbeiten von Stammdateien oder zum Öffnen von nautilus als Stamm finden Sie unter Ausführen von Gedit und Nautilus als Stamm mit pkexec anstelle von gksu - Web Upd8 . Dies bietet zwei "Polkit" -Dateien für pkexec, mit denen Sie ein Skript verwenden können, das pkexec geditdas Bearbeiten einer Stammdatei enthält , und in ähnlicher Weise für nautilus. Die Anweisungen befinden sich alle auf dieser Webseite. Ich verwende jetzt 'Dateimanager-Aktionen', um mit der rechten Maustaste Aktionen zum Ausführen von gedit oder nautilus als root bereitzustellen.

  3. Ich starte deja-dup als root für Backups des Core-Systems. Ich mache das nur selten, außer /home(für /homehäufige Backups, die keinen Root-Zugriff benötigen). Damit dies funktioniert, habe ich eine Kopie der in Schritt 2 für gedit verwendeten Datei erstellt und für deja-dup bearbeitet. Ich verstehe den Inhalt nicht wirklich, aber es funktioniert sowohl für Sicherungen als auch zum Wiederherstellen von Dateien mithilfe pkexec backupeines Skripts, das von einer .desktop-Datei initiiert wird. Ich habe diese neue Datei hinzugefügt, um Folgendes zu /usr/share/polkit-1/actionsenthalten:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD polkit Policy Configuration 1.0//EN" "http://www.freedesktop.org/software/polkit/policyconfig-1.dtd">
    
    <policyconfig>
      <icon_name>deja-dup</icon_name>
    
      <action id="org.gnome.DejaDup">
        <description gettext-domain="deja-dup">Backup</description>
        <message gettext-domain="deja-dup">Privileges are required to backup system files</message>
        <defaults>
        <allow_any>no</allow_any>
        <allow_inactive>auth_admin</allow_inactive>
        <allow_active>auth_admin</allow_active>
         </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/deja-dup</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
      </action>
    
    </policyconfig>
    

    Beachten Sie, dass sich in diesem Verzeichnis eine weitere deja-dup-Datei befindet, die angeblich beim Wiederherstellen von Dateien hilft, die jedoch nicht funktioniert. Diese neue Datei muss einen eindeutigen Namen haben, z org.gnome.DejaDupNew.policy.

Ich laufe momentan ohne GKSU. Ich werde versuchen weiterzumachen ...

pastim
quelle
Der Befehl zum Starten der Sicherung war pkexec deja-dupfür mich nach dem Hinzufügen der Datei, wie Sie beschrieben haben. Der Dialog lässt mich zuerst die Einstellungen auswählen, was großartig ist.
Wbloos
Das Einfügen einer Richtliniendatei /usr/share/polkit-1/actionswar in der Tat die Möglichkeit, einen Desktop-Starter mit erhöhten pkexecBerechtigungen zu erstellen . Hier ist ein weiteres Beispiel .
Serge Stroobandt
4

Nautilus Admin ( nautilus-admin ) ist eine einfache Python-Erweiterung für den Nautilus-Dateimanager, die dem Kontextmenü einige administrative Aktionen hinzufügt:

  • Als Administrator öffnen: Öffnet einen Ordner in einem neuen Nautilus-Fenster, das mit Administratorrechten (root) ausgeführt wird.
  • Als Administrator bearbeiten: Öffnet eine Datei in einem Gedit-Fenster, das mit Administratorrechten (root) ausgeführt wird.

Um Nautilus Admin in allen derzeit unterstützten Versionen von Ubuntu zu installieren, öffnen Sie das Terminal und geben Sie Folgendes ein:

sudo apt install nautilus-admin

Ich habe alle Alternativen zu gksu in 18.04 für andere Anwendungen als Files und Gedit getestet, und die, die am konsequentesten zu funktionieren scheint, ist:

sudo -H Anwendungsname &> / dev / null

pkexecist der beste Ersatz für gksu, wenn es funktioniert, weil es höhere Sicherheit bietet, aber für verschiedene Apps sehr inkonsistent ist (zum Beispiel funktioniert es nicht mit Gedit) und bei einigen Apps zum Absturz führen kann. sudo -iEs ist unnötig schwierig zu verwalten, da es Ihre Root-Rechte für einen längeren Zeitraum erhöht, wenn Sie nur root sein müssen, um einen einzelnen Befehl auszuführen.

karel
quelle
3

Ich verwende ein Skript mit dem Namen, sgeditdas die Benutzervorgaben für Schriftarten, Registerkarten und Erweiterungen übernimmt. Es wird sudo -H geditanstelle von gksu geditfür die Stabilität in der GUI-Umgebung verwendet. Es fordert zur Eingabe eines Passworts auf.

Haben Sie sudoIhre Benutzerkontoeinstellungen geditgeerbt

sgedit 80 spalte rechts slider.gif

In diesem Beispiel wurden die Benutzereinstellungen für den Schriftartnamen, die Schriftgröße, die Tabulatoren, die Umwandlung von Tabulatoren in Leerzeichen, die Hervorhebung von 80 Spalten und den Schieberegler für Miniaturansichten auf der rechten Seite von übernommen sudo.

Mit regular können sudo -H geditSie diese Konfigurationseinstellungen weder vornehmen noch speichern. Mit dem folgenden Skript werden sgeditdie Einstellungen von Ihrem Benutzerkonto übernommen.

Dieses Skript behebt auch die Probleme " gksuist schlecht und nicht standardmäßig installiert" und " pkexecist schwer einzurichten".


Hintergrund

Ich bin seit Jahren von demselben Problem geplagt. Das Projekt dieses Wochenendes bestand darin, das sgeditDrehbuch zu schreiben :

  • Mit anrufen sgedit filename1 filename2...
  • Ruft die gedit-Einstellungen des Benutzers für Tabulatoren, Schriftarten, Zeilenumbruch usw. ab.
  • Erhöht, sudo -Hum den Dateieigentum beizubehalten und gleichzeitig Root- Rechte zu erhalten.
  • Fordert das Passwort an, wenn das letzte Sudo abgelaufen ist.
  • Ruft die gedit-Einstellungen von sudo ab
  • Vergleicht die Unterschiede zwischen Benutzer- und Sudo Gedit-Einstellungen
  • Läuft nur gsettings setmit den Unterschieden (reduziert 174 setBefehle auf ein Dutzend oder weniger. Beim nächsten Mal werden vielleicht nur ein oder zwei Änderungen ausgeführt, aber oftmals keine.
  • Ruft gedit als Hintergrundaufgabe auf, sodass die Eingabeaufforderung des Terminals sofort wieder angezeigt wird.

Bash-Skript sgedit

#!/bin/bash

# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as sudo using $USER preferences
# DATE: June 17, 2018.

# Must not prefix with sudo when calling script
if [[ $(id -u) == 0 ]]; then
    zenity --error --text "You cannot call this script using sudo. Aborting."
    exit 99
fi

# Get user preferences before elevating to sudo
gsettings list-recursively | grep -i gedit | grep -v history |
    grep -v docinfo |
    grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings

sudoFunc () {
    # Must be running as sudo
    if [[ $(id -u) != 0 ]]; then
        zenity --error --text "Sudo password authentication failed. Aborting."
        exit 99
    fi

    # Get sudo's gedit preferences
    gsettings list-recursively | grep -i gedit | grep -v history |
        grep -v docinfo |
        grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
    diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
    sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
    chmod +x /tmp/gedit.gsettings.diff
    bash -x /tmp/gedit.gsettings.diff  # Display override setting to terminal
    nohup gedit $@ &>/dev/null &
}

FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"

Housekeeping

Kopieren Sie das obige Bash-Skript in eine neue Datei mit dem Namen sgedit. Ich empfehle es in Ihrem $HOME/binVerzeichnis zu platzieren, dh /home/YOURNAME/bin. Möglicherweise müssen Sie zuerst das Verzeichnis erstellen.

Markieren Sie die Datei als ausführbar mit:

chmod a+x ~/sgedit

Hinweis ~ist eine Abkürzung für /home/YOURNAME.

WinEunuuchs2Unix
quelle
0

Ubuntu 18.04: Einige Installationsprogramme und andere benötigen gksudo oder gksu, um mit demselben Namen verfügbar zu sein. Um diese Arbeit zu machen:

Installieren Sie die Gnome-Version von ssh-askpass. Ohne dies kann der Passwortdialog hinter einem anderen Fenster versteckt sein:

sudo apt-get install ssh-askpass-gnome

Neue Datei erstellen my-gksudo.sh:

sudo -H gedit /etc/profile.d/my-gksudo.sh

Dateiinhalt:

export SUDO_ASKPASS=/usr/bin/ssh-askpass

Erstelle neue Dateien gksudo und gksu mit identischem Inhalt:

sudo -H gedit /usr/bin/gksudo

und

sudo -H gedit /usr/bin/gksu

Dateiinhalt für beide:

sudo -A $@

Gksudo und gksu ausführbar machen:

sudo chmod +x /usr/bin/gksudo

Und

sudo chmod +x /usr/bin/gksu

Starten Sie den Computer neu.

Pekka Lehtikoski
quelle