Comment exécuter Dolphin en tant que root?

14

J'utilise actuellement dolphin 17.04.3et chaque fois que je l'exécute en tant que sudo, cela donne l'erreur suivante Executing Dolphin as root is not possible.sans expliquer pourquoi ni donner d'alternative. Alors, comment puis-je exécuter dolphin en tant que root pour copier ou supprimer des fichiers?

Ankur S
la source
Quelle version d'Ubuntu utilisez-vous?
George Udosen
1
utilisez-vous wayland? par défaut, wayland ne permet pas aux programmes GUI de s'exécuter en tant que root.
ravery
ne fonctionne pas. l'option pour créer ou déplacer des fichiers est simplement grisée dans le menu contextuel. Veuillez vérifier votre version
Ankur S
J'utilise Ubuntu 17.10 et x11 avec kde installé
Ankur S
2
"Alors, comment puis-je exécuter dolphin en tant que root pour copier ou supprimer des fichiers?" Veuillez réévaluer cette question. Utilisez la ligne de commande pour les tâches d'administration. Il est là spécifiquement pour les tâches d'administration. Les outils graphiques ne doivent pas être utilisés pour les tâches d'administration. L'exécution d'outils graphiques en tant qu'administrateur a des effets secondaires invisibles concernant les autorisations et est récemment considéré comme tel que les développeurs le bloquent activement. Pensez-vous vraiment que c'est une bonne idée d'aller à l'encontre des gens qui savent (ou sont censés savoir;)) exactement ce qu'un outil de manipulation de fichiers graphiques peut et fait?
Rinzwind

Réponses:

11

Court:

Dauphin 17.04

Le Dolphin 17.04 ou version ultérieure a une vérification:

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

Une solution de contournement

Vous pouvez modifier les sources et désactiver la vérification. Ensuite, le Dolphin fonctionnera comme avant.

Dolphin 18.08

Peu de demandes de révision

Dolphin 18.08.0 utilise ces modifications et Dolphin peut être lancé avec la commande pkexec en tant que super-utilisateur administratif.

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

Plus: KDE Foruns - Comment exécuter Dolphin 18.08 en tant que root avec Kubuntu ou KDE neon? - https://forum.kde.org/viewtopic.php?f=224&t=153655

entrez la description de l'image ici

Contexte:

Plus tôt - Forums KDE - Comment exécuter Dolphin en tant que root?: Https://forum.kde.org/viewtopic.php?f=224&t=141836

Pour des raisons de sécurité: Interdisez l'exécution de Dolphin en tant que root sur Linux - https://cgit.kde.org/dolphin.git/commit/?id=0bdd8e0b0516555c6233fdc7901e9b417cf89

Interdire l'exécution de Dolphin en tant que root sur Linux Fondamentalement, une copie de commit kate / 9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e qui a été écrite par Martin Grässlin

Interdire l'exécution de kate et kwrite en tant que root sur Linux: https://phabricator.kde.org/R40:9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e

Plus de conseils

KDE Reddit - Racine Dolphin sur l'application KDE 17.04: https://www.reddit.com/r/kde/comments/6785b1/dolphin_root_on_kde_app_1704/

Contournez "L'exécution de Dolphin en tant que root n'est pas possible" et récupérez les privilèges root de KDE Dolphin: https://www.reddit.com/r/kde/comments/6xs3mp/bypass_executing_dolphin_as_root_is_not_possible/

Avenir

Prise en charge de Polkit dans KIO: https://phabricator.kde.org/T6561

Lorsqu'il est prêt, le Dolphin affichera la requête de mot de passe si nécessaire. Maintenant, avec le Dolphin & KIO patché:

entrez la description de l'image ici

user26687
la source
1
Pourriez-vous nous en dire un peu plus sur "Pour des raisons de sécurité"?
Jim McAdams
Avez-vous lu le phabricator.kde.org/… . Identique / plus: Martin Grässlin - Modification des fichiers en tant que root: blog.martin-graesslin.com/blog/2017/02/editing-files-as-root
user26687
donc, la réponse simple est "vous ne pouvez pas exécuter Dolphin en tant que root, sauf si vous installez une version corrigée"?
@ user47206: Pourquoi ne pas le patcher vous-même? ;) Voir ma réponse ci-dessous!
WitchCraft
10

Pas une réponse, juste une solution de contournement aux fins mentionnées par l'OP ( copying or deleting files).

L'idée est de

  1. installer un autre gestionnaire de fichiers qui n'a pas cette limitation et qui n'apporte pas beaucoup de dépendances

  2. créer un menu contextuel "Ouvrir en tant que root" dans Dolphin pour cet autre gestionnaire de fichiers.

Les principaux gestionnaires de fichiers d'autres bureaux peuvent être utilisés (Nautilus, Nemo, Caja, Thunar) mais ils apportent quelques dépendances. Même PCManFM et PCManFM-Qt le font. Si vous en avez besoin à d'autres fins, ajouter que celui-ci pourrait être une bonne solution.

J'ai trouvé que Krusader (qui, je pense, était auparavant installé par défaut dans certains systèmes KDE) peut être facilement installé, n'apporte aucune dépendance dans Kubuntu 18.04 et peut être utilisé en tant que root.

sudo apt install krusader

Sous ses outils, il a l'option "Root".

entrez la description de l'image ici

qui demande un mot de passe dans une interface graphique.

Pour ajouter un menu contextuel dans dolphin, créez le dossier ~/.local/share/kservices5/ServiceMenus puis faites

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

et ajouter

[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

Pour une raison quelconque, kdesu krusadercela ne fonctionne pas, et j'ai utilisé la solution de ici .. Ce qui fonctionne aussi est konsole -e sudo krusader, mais qui montre le terminal au lieu d'une interface utilisateur graphique pour le mot de passe rapide.

Ensuite, vous verrez dans Dolphin:

entrez la description de l'image ici

amener un dialogue

entrez la description de l'image ici

qui est celui qui fonctionne ..


la source
4

J'ai créé ma propre version sur la base des réponses ci-dessus. Donc, pour ajouter un menu contextuel pour ouvrir Dolphin en tant que root, procédez comme suit:

  • Créez un fichier appelé par exemple DolphinAsRoot.desktopsur le répertoire~/.local/share/kservices5/ServiceMenus/
  • Avec un éditeur de texte, mettez le contenu suivant dessus:
[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
  • S'il n'apparaît toujours pas dans le menu contextuel de Dolphin, allez dans "Paramètres -> Configurer Dolphin ...-> Services" et activez l'option que vous avez récemment ajoutée. Ça devrait être là. Sinon, fermez Dolphin ou déconnectez-vous et connectez-vous à votre session.

C'est tout, j'espère que ça vous aide tous comme ça m'a aidé;)

Juan Gómez Carrillo
la source
0

Tout ce que j'ai fait, c'est ajouter le terminal à la barre d'outils (bien que le raccourci clavier soit lié à F4) et j'ai utilisé la ligne de commande pour effectuer des opérations en tant que sudo selon les besoins.

Ainsi

Oui, ce n'est peut-être pas aussi pratique, mais cela vous oblige à commencer à apprendre la ligne de commande tout en vous donnant une représentation visuelle du fonctionnement réel de la commande.

C'est sur Arch mais la fonctionnalité devrait être la même sur Ubuntu. J'espère que cela a aidé.

épée
la source
0

ici, c'est une solution de contournement pour Dolphin 17.x:

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

obtenir libkdeinit5_dolphin.sod' ici

Testé par moi, cela fonctionne très bien dans Ubuntu bionic.

la source

eadmaster
la source
0

C'est trivial!

Regardez simplement le code source de kate et kwrite:

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

Dans les premières lignes de code directement au début de la fonction "principale", vous trouverez:

/**
 * 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 n'est pas différent, sauf que cela se produit dans libkdeinit5_dolphin.so.

Donc, exécuter en tant que root est trivial, tout ce que nous devons faire est de sauter la vérification if uid = 0.

Pour ce faire, nous utilisons le patchage permanent de kate, kwrite et dolphin.
Donc, la première chose que nous faisons, c'est de vider le contenu binaire dans un fichier texte:

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

Vous pouvez maintenant regarder le fichier avec gedit ~/kate.txt, et si vous recherchez getuid, vous trouverez quelque chose comme:

   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>

Maintenant, sur le côté gauche, vous trouvez l'adresse mémoire, après les deux points (:) vous verrez le code d'instruction binaire (hex) et à droite, vous voyez le démontage de ce code (aka ce que cela signifie) .

Maintenant, vous voyez, là il appelle getuid, teste si c'est zéro et saute dans l'instruction if, c'est-à-dire si la valeur de retour est égale à zéro (je: jump si égal).

Maintenant, nous ne voulons pas sauter dans le si, nous supprimons simplement cette merde là-bas. Mais simplement supprimer cette merde changerait les adresses de 6 octets, supprimant tous les sauts relatifs dans le programme dans le processus et, par conséquent, le programme. Donc, à la place, vous remplacez simplement toute la longueur de l'instruction de saut par NOP (abréviation de N o Op eration), également appelées 0x90 dans le code d'instruction / hex.

Vous devez donc remplacer chaque octet de saut par 0x90, donc là où vous aviez précédemment

0f 84 e9 1e 00 00

Tu vas avoir

90 90 90 90 90 90

Cela peut être fait simplement avec un éditeur hexadécimal.
Nous en installons donc un:

sudo apt-get install wxhexeditor

Maintenant, dans l'éditeur hexadécimal, vous recherchez 0f 84 e9 1e 00 00, et vous le remplacez par 90 90 90 90 90 90. S'il n'y a qu'une seule occurrence de 0f 84 e9 1e 00 00, et il y en a un, alors c'est très simple. Modifiez simplement les octets hexadécimaux en 90 90 90 90 90 90 et enregistrez. Fini. Kate ou kwrite s'ouvriront maintenant, que vous soyez root ou non.

si vous faites de même avec les dauphins, vous vous rendrez compte qu'il objdump -Crd /usr/bin/dolhinproduit un démontage très court.

si vous exécutez ldd /usr/bin/dolphin, vous verrez que dolphin charge la bibliothèque partagée libkdeinit5_dolphin.so

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

Vous faites donc l'objdump sur libkdeinit5_dolphin.so:

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

Ouvrez maintenant l'objdump: gedit ~/libkdeinit5_dolphin.txt

Recherchez getuid, et vous verrez que l'un des résultats de la recherche est:

   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

C'est génial, vous voyez, plus de merde comme dans kate et kwrite.
Maintenant ouvrez-le /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.sodans votre éditeur hexadécimal, recherchez-le 0f 84 58 1a 00 00et remplacez-le par 90 90 90 90 90 90.
Appuyez sur Enregistrer, et c'est fait.

Dolphin s'exécute maintenant en tant que root.

Remarque: Bonne idée de faire une copie de sauvegarde des fichiers que vous modifiez, au cas où vous f *** up.

En outre, vous pouvez simplement télécharger la source de kate, kwrite et dolphin, supprimer cette merde du code source, compiler et installer. Mais comme le système stupide de cmake manque un modèle de merde pour des conneries stupides telles que des icônes, probablement parce que le cmake fourni par le dépôt est trop ancien, cela ne fonctionne pas. Dommage, ça aurait été trop simple si ça avait marché, non?

Mais simplement patcher les exécutables comme je l'ai décrit est plus rapide, alors peu importe.

Vous voyez, ce n'est pas simple, mais c'est trivial.

PS:
Maintenant, chaque fois que kate, kwrite ou dolphin sont mis à jour via apt, vos modifications seront écrasées. Vous devrez les réappliquer. Je vais laisser l'automatisation du processus de patch entre vos mains plus que capables et votre langage de programmation de joice;)

Cela peut-il être fait en pure bash?

De plus, si vous voulez patcher vlc pour la même merde, vous pouvez le faire avec sed:

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

Il suffit de mettre cette instruction sed dans un script, afin que vous puissiez réappliquer, si vous en avez besoin si vous êtes hors ligne et n'avez pas accès à Internet.

Piratage heureux - avec kate, kwrite et dauphin - en tant que root - tout en regardant / écoutant quelque chose sur vlc.

PS2:
Les vérifications de racines de merde ont suivi le chemin du Dodo dans KDE v19.04.
Qui a dit n l' évolution était une mauvaise chose.
Pour progresser - Santé!

La sorcellerie
la source
0

Pas une solution, mais une suggestion .... La modification de Dolphin et des fichiers est plutôt risquée. Double Commander est une excellente alternative, et se trouve dans le référentiel. Il s'installera sans racine root. Pour prendre racine, entrez simplement 'sudo doublecmd' dans le terminal. Il présente de nombreux avantages lorsque vous travaillez avec des millions et des fichiers volumineux.

rob grune
la source