Wie starte ich Dolphin als Root?

13

Ich verwende derzeit dolphin 17.04.3und wann immer ich es als sudo ausführe, gibt es den folgenden Fehler, Executing Dolphin as root is not possible.ohne zu erklären, warum oder eine Alternative. Wie kann ich Delfin als Root zum Kopieren oder Löschen von Dateien ausführen?

Ankur S.
quelle
Welche Ubuntu-Version verwenden Sie?
George Udosen
1
Benutzt du Wayland? Standardmäßig erlaubt Wayland nicht, dass GUI-Programme als Root ausgeführt werden.
Ravery
funktioniert nicht Die Option zum Erstellen oder Verschieben von Dateien ist im Kontextmenü einfach ausgegraut. Bitte überprüfen Sie Ihre Version
Ankur S
Ich benutze Ubuntu 17.10 und x11 mit kde installiert
Ankur S
2
"Wie kann ich Delfin als Root zum Kopieren oder Löschen von Dateien ausführen?" Bitte bewerten Sie diese Frage neu. Verwenden Sie die Befehlszeile für Administratoraufgaben. Es ist speziell für Administratoraufgaben vorgesehen. Grafische Tools sollten nicht für Verwaltungsaufgaben verwendet werden. Das Ausführen von grafischen Tools als Administrator hat unsichtbare Nebenwirkungen in Bezug auf Berechtigungen und wird in letzter Zeit als so angesehen, dass die Entwickler sie aktiv blockieren. Halten Sie es wirklich für eine gute Idee, sich gegen die Leute zu stellen, die genau wissen (oder wissen sollen;)), was ein Manipulationswerkzeug für grafische Dateien kann und tut?
Rinzwind

Antworten:

10

Kurz:

Delphin 17.04

Der Dolphin 17.04 oder höher hat eine Prüfung:

if uid == 0 then show the "Executing Dolphin as root is not possible." and exit.

Eine Problemumgehung

Sie können die Quellen bearbeiten und die Prüfung deaktivieren. Dann funktioniert der Delphin wie zuvor.

Delphin 18.08

Nur wenige Überprüfungsanfragen

Dolphin 18.08.0 verwendet diese Änderungen und der Dolphin kann mit dem Befehl pkexec als administrativer Superuser gestartet werden.

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true dolphin

Mehr: KDE Foruns - Wie kann man Dolphin 18.08 als Root mit Kubuntu oder KDE Neon ausführen? - https://forum.kde.org/viewtopic.php?f=224&t=153655

Geben Sie hier die Bildbeschreibung ein

Hintergrund:

Früher - KDE-Foren - Wie wird Dolphin als Root ausgeführt?: Https://forum.kde.org/viewtopic.php?f=224&t=141836

Aus Sicherheitsgründen: Die Ausführung von Dolphin als Root unter Linux nicht zulassen - https://cgit.kde.org/dolphin.git/commit/?id=0bdd8e0b0516555c6233fdc7901e9b417cf89

Das Ausführen von Dolphin als Root unter Linux ist grundsätzlich nicht zulässig. Grundsätzlich eine Kopie von commit kate / 9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e, die von Martin Grässlin geschrieben wurde

Das Ausführen von kate und kwrite als Root unter Linux ist nicht zulässig: https://phabricator.kde.org/R40:9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e

Mehr Tipps

KDE Reddit - Dolphin root in der KDE App 17.04: https://www.reddit.com/r/kde/comments/6785b1/dolphin_root_on_kde_app_1704/

Umgehen Sie "Das Ausführen von Dolphin als Root ist nicht möglich" und erhalten Sie die KDE-Dolphin-Root-Berechtigungen zurück: https://www.reddit.com/r/kde/comments/6xs3mp/bypass_executing_dolphin_as_root_is_not_possible/

Zukunft

Polkit-Unterstützung in KIO: https://phabricator.kde.org/T6561

Wenn es fertig ist, zeigt der Dolphin bei Bedarf die Passwortabfrage an. Jetzt mit dem gepatchten Dolphin & KIO:

Geben Sie hier die Bildbeschreibung ein

user26687
quelle
1
Könnten Sie das Thema "Aus Sicherheitsgründen" etwas näher erläutern?
Jim McAdams
Haben Sie das gelesen phabricator.kde.org/... . Gleich / mehr: Martin Grässlin - Bearbeiten von Dateien als root: blog.martin-graesslin.com/blog/2017/02/editing-files-as-root
user26687
Die einfache Antwort lautet also "Sie können Dolphin nicht als Root ausführen, es sei denn, Sie installieren eine gepatchte Version".
@ user47206: Warum nicht selbst patchen? ;) Siehe meine Antwort unten!
WitchCraft
9

Keine Antwort, nur eine Problemumgehung für den vom OP ( copying or deleting files) genannten Zweck .

Die Idee ist zu

  1. Installieren Sie einen anderen Dateimanager, der diese Einschränkung nicht aufweist und nicht viele Abhängigkeiten mit sich bringt

  2. Erstellen Sie in Dolphin ein Kontextmenü "Als Stamm öffnen" für diesen anderen Dateimanager.

Die Hauptdateimanager anderer Desktops können verwendet werden (Nautilus, Nemo, Caja, Thunar), bringen jedoch einige Abhängigkeiten mit sich. Sogar PCManFM und PCManFM-Qt machen das. Wenn Sie eines davon für einen anderen Zweck benötigen, könnte das Hinzufügen eine gute Lösung sein.

Ich habe festgestellt, dass Krusader (von dem ich denke, dass er in einigen KDE-Systemen standardmäßig installiert war) einfach installiert werden kann, keine Abhängigkeiten in Kubuntu 18.04 mit sich bringt und als Root verwendet werden kann.

sudo apt install krusader

Unter seinen Tools hat es die Option "Root".

Geben Sie hier die Bildbeschreibung ein

das fragt nach Passwort in einer GUI.

Um ein Kontextmenü in Delphin hinzuzufügen, erstellen Sie den Ordner ~/.local/share/kservices5/ServiceMenusund tun Sie es dann

kate ~/.local/share/kservices5/ServiceMenus/filemanager_root.desktop

und hinzufügen

[Desktop Action root]
Exec=/usr/lib/kde4/libexec/kdesu krusader
Icon=dolphin
Name=Open in Krusader file manger as administrator

[Desktop Entry]
Actions=root
Icon=krusader_root
MimeType=inode/directory
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
X-KDE-Priority=TopLevel
X-KDE-StartupNotify=false

Aus irgendeinem Grund kdesu krusaderfunktioniert es nicht und ich habe die Lösung von hier aus verwendet . Was auch funktioniert, ist konsole -e sudo krusader, dass das Terminal anstelle einer GUI für die Passwortabfrage angezeigt wird.

Dann sehen Sie in Dolphin:

Geben Sie hier die Bildbeschreibung ein

einen Dialog bringen

Geben Sie hier die Bildbeschreibung ein

Welches ist eine, die funktioniert ..


quelle
3

Ich habe meine eigene Version basierend auf den obigen Antworten erstellt. Gehen Sie folgendermaßen vor, um ein Kontextmenü zum Öffnen von Dolphin als Root hinzuzufügen :

  • Erstellen Sie eine Datei, die beispielsweise DolphinAsRoot.desktopim Verzeichnis aufgerufen wird~/.local/share/kservices5/ServiceMenus/
  • Fügen Sie mit einem Texteditor den folgenden Inhalt hinzu:
[Desktop Entry]
Actions=root
Icon=system-file-manager-root
MimeType=inode/directory
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
X-KDE-Priority=TopLevel
X-KDE-StartupNotify=false

[Desktop Action root]
Exec=/usr/bin/pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true dolphin
Icon=system-file-manager-root
Name=Open as administrator
  • Wenn es im Kontextmenü von Dolphin immer noch nicht angezeigt wird, gehen Sie zu "Einstellungen -> Dolphin konfigurieren ...-> Dienste" und aktivieren Sie die Option, die Sie kürzlich hinzugefügt haben. Es sollte da sein. Wenn nicht, schließen Sie Dolphin oder melden Sie sich in Ihrer Sitzung ab und an.

Das ist alles, ich hoffe es hilft euch allen so wie es mir geholfen hat;)

Juan Gómez Carrillo
quelle
0

Ich habe lediglich das Terminal zur Symbolleiste hinzugefügt (obwohl die Tastenkombination an F4 gebunden ist) und die Befehlszeile verwendet, um Operationen so sudo wie erforderlich auszuführen.

Wie so

Ja, es ist vielleicht nicht so praktisch, aber es zwingt Sie dazu, die Befehlszeile zu lernen, während Sie visuell darstellen, wie der Befehl tatsächlich funktioniert.

Dies ist auf Arch, aber die Funktionalität sollte unter Ubuntu gleich sein. Hoffe das hat geholfen.

Schwertkorn
quelle
0

Hier ist es eine Problemumgehung für Dolphin 17.x:

export XDG_CURRENT_DESKTOP=KDE; LD_PRELOAD=/home/roger/Downloads/dolphin/usr/lib64/libkdeinit5_dolphin.so /usr/bin/dolphin

erhalten libkdeinit5_dolphin.sovon hier

Von mir getestet, funktioniert es gut in Ubuntu Bionic.

Quelle

eadmaster
quelle
0

Es ist trivial!

Schauen Sie sich einfach den Quellcode von Kate und Kwrite an:

diff --git a/kate/main.cpp b/kwrite/main.cpp

In den ersten Codezeilen direkt am Anfang der "Haupt" -Funktion finden Sie:

/**
 * Check whether we are running as root
 **/
if (getuid() == 0) // uid = user id = 0 ==> means if you are user 0 (aka root)
{
    std::cout << "Executing Kate as root is not possible. To edit files as root use:" << std::endl;
    std::cout << "SUDO_EDITOR=kate sudoedit <file>" << std::endl;
    return 0;
}

Dolphin ist nicht anders, außer dies geschieht in libkdeinit5_dolphin.so.

Das Ausführen als root ist also trivial. Alles, was wir tun müssen, ist die Prüfung if uid = 0 zu überspringen.

Die Art und Weise, wie wir dies tun, ist das dauerhafte Patchen von Kate, Kwrite und Delphin.
Das erste, was wir tun, ist, den binären Inhalt in eine Textdatei zu kopieren:

objdump -Crd /usr/bin/kate >> ~/kate.txt
objdump -Crd /usr/bin/kwrite >> ~/kwrite.txt

Jetzt können Sie sich die Datei mit ansehen gedit ~/kate.txtund wenn Sie nach getuid suchen, finden Sie etwas wie:

   2a985:   31 c0                   xor    %eax,%eax
   2a987:   89 bc 24 dc 00 00 00    mov    %edi,0xdc(%rsp)
   2a98e:   e8 ed ce ff ff          callq  27880 <getuid@plt>
   2a993:   85 c0                   test   %eax,%eax
   2a995:   0f 84 e9 1e 00 00       je     2c884 <__cxa_finalize@plt+0x1f5c>

Jetzt finden Sie auf der linken Seite die Speicheradresse. Nach dem Doppelpunkt (:) sehen Sie den binären Anweisungscode (hex) und rechts davon sehen Sie die Zerlegung dieses Codes (auch bekannt als was er bedeutet). .

Nun, sehen Sie, dort ruft es getuid auf, testet, ob das Null ist, und springt in die if-Anweisung, dh wenn der Rückgabewert gleich Null ist (je: jump if gleich).

Jetzt wollen wir nicht mehr in das Wenn springen, also entfernen wir einfach diesen Mist dort. Aber nur das Entfernen dieses Mistes würde die Adressen um 6 Bytes ändern und dabei alle relativen Sprünge im Programm und infolgedessen das Programm zunichte machen. Anstatt also ersetzen Sie einfach die gesamte Länge der Sprunganweisung mit NOP (kurz für N o Op menarbeit) Anweisungen, auch bekannt als 0x90 in Befehlscode / hex.

Sie müssen also jedes Sprungbyte dort durch 0x90 ersetzen, also dort, wo Sie es zuvor hatten

0f 84 e9 1e 00 00

du wirst haben

90 90 90 90 90 90

Dies kann einfach mit einem Hex-Editor erfolgen.
Also installieren wir eine:

sudo apt-get install wxhexeditor

Jetzt suchen Sie im Hex-Editor nach 0f 84 e9 1e 00 00 und ersetzen diese durch 90 90 90 90 90 90. Wenn es nur ein Vorkommen von 0f 84 e9 1e 00 00 gibt und dies der Fall ist, ist dies trivial einfach. Ändern Sie einfach die Bytes in hex in 90 90 90 90 90 90 und speichern Sie. Fertig. Kate oder kwrite werden jetzt geöffnet, egal ob Sie root sind oder nicht.

Wenn Sie dasselbe mit Delfinen tun, werden Sie feststellen, dass objdump -Crd /usr/bin/dolhineine sehr kurze Demontage auftritt.

Wenn Sie ausführen ldd /usr/bin/dolphin, wird Delphin die gemeinsam genutzte Bibliothek libkdeinit5_dolphin.so laden

linux-vdso.so.1 (0x00007ffc2fdf0000) libkdeinit5_dolphin.so => ​​/usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.so (0x00007fb54e76c000)

Also machst du den objdump auf libkdeinit5_dolphin.so:

objdump -Crd /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.so >> ~/libkdeinit5_dolphin.txt

Öffnen Sie nun den objdump: gedit ~/libkdeinit5_dolphin.txt

Suchen Sie nach getuid und Sie werden sehen, dass eines der Suchergebnisse lautet:

   41f95:   31 c0                   xor    %eax,%eax
   41f97:   89 7c 24 5c             mov    %edi,0x5c(%rsp)
   41f9b:   e8 50 b6 ff ff          callq  3d5f0 <getuid@plt>
   41fa0:   85 c0                   test   %eax,%eax
   41fa2:   0f 84 58 1a 00 00       je     43a00 <kdemain@@Base+0x1a90>
   41fa8:   48 8d 84 24 a0 00 00    lea    0xa0(%rsp),%rax

Das ist großartig, sehen Sie, mehr Mist, genau wie bei Kate und Kwrite.
Öffnen /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.soSie nun in Ihrem Hex-Editor, suchen Sie danach 0f 84 58 1a 00 00und ersetzen Sie ihn durch 90 90 90 90 90 90.
Klicken Sie auf Speichern und fertig.

Dolphin läuft jetzt als root.

Hinweis: Es empfiehlt sich, eine Sicherungskopie der von Ihnen geänderten Dateien zu erstellen, nur für den Fall, dass Sie fertig sind.

Sie können auch einfach die Quelle von Kate, Kwrite und Delphin herunterladen, diesen Mist aus dem Quellcode entfernen, kompilieren und installieren. Aber da dem dummen cmake-System eine beschissene Mistvorlage für irgendeinen dummen Mist wie Symbole fehlt, wahrscheinlich weil der vom Repo gelieferte cmake zu alt ist, funktioniert dies nicht. Schade, wäre zu einfach gewesen, wenn es nur funktioniert hätte, nicht wahr?

Aber nur die ausführbaren Dateien wie beschrieben zu patchen ist schneller, also wen interessiert das schon?

Sie sehen, es ist nicht einfach, aber es ist trivial.

PS:
Jedes Mal, wenn Kate, Kwrite oder Delphin über apt aktualisiert werden, werden Ihre Änderungen überschrieben. Sie müssen sie erneut anwenden. Ich überlasse die Automatisierung des Patch-Prozesses Ihren mehr als fähigen Händen und Ihrer Programmiersprache von joice;)

Kann das in reiner Bash gemacht werden?

Wenn Sie vlc für denselben Mist patchen möchten, können Sie dies auch mit sed tun:

sed -i 's/geteuid/getppid/' /usr/bin/vlc

Fügen Sie diese sed-Anweisung einfach in ein Skript ein, damit Sie sie erneut anwenden können, falls dies jemals erforderlich sein sollte, wenn Sie offline sind und keinen Internetzugang haben.

Viel Spaß beim Hacken - mit Kate, Kwrite und Delphin - als Wurzel - während Sie etwas auf vlc sehen / hören.

PS2:
Die beschissenen Root-Checks gingen den Weg des Dodo in KDE v19.04.
Wer n Evolution sagte, war eine schlechte Sache.
Um voranzukommen - Prost!

Hexerei
quelle