Come eseguire Dolphin come root?


14

Attualmente uso dolphin 17.04.3e ogni volta che lo eseguo come sudo, dà il seguente errore Executing Dolphin as root is not possible.senza spiegare perché o dare un'alternativa. Quindi, come posso eseguire dolphin come root per copiare o eliminare file?


Quale versione di Ubuntu stai usando?
George Udosen,

1
stai usando Wayland? per impostazione predefinita, wayland non consente l'esecuzione dei programmi GUI come root.
Ravery

non funziona l'opzione per creare o spostare i file è semplicemente disattivata nel menu contestuale. Controlla la tua versione
Ankur S

Sto usando Ubuntu 17.10 e x11 con kde installato
Ankur S

2
"Quindi, come posso eseguire dolphin come root per copiare o eliminare file?" Si prega di rivalutare questa domanda. Utilizzare la riga di comando per le attività di amministrazione. È lì specificamente per le attività di amministrazione. Gli strumenti grafici non devono essere utilizzati per le attività di amministrazione. L'esecuzione di strumenti grafici come amministratore ha effetti collaterali invisibili per quanto riguarda le autorizzazioni e in ritardo è ritenuto tale che gli sviluppatori lo bloccano attivamente. Pensi davvero che sia una buona idea andare contro le persone che sanno (o dovrebbero sapere;)) esattamente cosa uno strumento di manipolazione di file grafici può e fa?
Rinzwind,

Risposte:


11

Corto:

Dolphin 17.04

Dolphin 17.04 o successivo ha un controllo:

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

Una soluzione alternativa

È possibile modificare le fonti e disabilitare il controllo. Quindi il delfino funzionerà come prima.

Dolphin 18.08

Poca richiesta di revisione

Dolphin 18.08.0 sta usando queste modifiche e Dolphin può essere avviato con il comando pkexec come superutente amministrativo.

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

Altro: KDE Foruns - Come eseguire Dolphin 18.08 come root con Kubuntu o KDE Neon? - https://forum.kde.org/viewtopic.php?f=224&t=153655

inserisci qui la descrizione dell'immagine

Sfondo:

Prima - Forum di KDE - Come eseguire Dolphin come root ?: https://forum.kde.org/viewtopic.php?f=224&t=141836

Per motivi di sicurezza: non consentire l'esecuzione di Dolphin come root su Linux - https://cgit.kde.org/dolphin.git/commit/?id=0bdd8e0b0516555c6233fdc7901e9b417cf89

Non consentire l'esecuzione di Dolphin come root su Linux Fondamentalmente una copia di commit kate / 9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e che è stata scritta da Martin Grässlin

Non consentire l'esecuzione di kate e kwrite come root su Linux: https://phabricator.kde.org/R40:9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e

Più suggerimenti

KDE Reddit - Dolphin root sull'app KDE 17.04: https://www.reddit.com/r/kde/comments/6785b1/dolphin_root_on_kde_app_1704/

Bypass "Non è possibile eseguire Dolphin come root" e riconquistare i privilegi di root di KDE Dolphin: https://www.reddit.com/r/kde/comments/6xs3mp/bypass_executing_dolphin_as_root_is_not_possible/

Futuro

Supporto Polkit in KIO: https://phabricator.kde.org/T6561

Quando è pronto, Dolphin mostrerà la richiesta della password, se necessario. Ora, con Dolphin & KIO con patch:

inserisci qui la descrizione dell'immagine


1
Potresti approfondire un po 'di più il "Per motivi di sicurezza"?
Jim McAdams,

Hai letto il phabricator.kde.org/… . Stesso / altro: Martin Grässlin - Modifica dei file come root: blog.martin-graesslin.com/blog/2017/02/editing-files-as-root
user26687

quindi, la semplice risposta è "non è possibile eseguire Dolphin come root, a meno che non si installi una versione con patch"?

@ user47206: Perché non patchare tu stesso? ;) Vedi la mia risposta qui sotto!
WitchCraft,

10

Non una risposta, solo una soluzione alternativa allo scopo menzionato dall'OP ( copying or deleting files).

L'idea è di

  1. installa un altro gestore di file che non abbia questa limitazione e che non porti molte dipendenze

  2. creare un menu contestuale "Apri come root" in Dolphin per questo altro file manager.

È possibile utilizzare i principali file manager di altri desktop (Nautilus, Nemo, Caja, Thunar) ma comportano alcune dipendenze. Anche PCManFM e PCManFM-Qt lo fanno. Se hai bisogno di uno di quelli per qualche altro scopo aggiungendo che uno potrebbe essere una buona soluzione.

Ho scoperto che Krusader (che in passato pensavo fosse installato di default in alcuni sistemi KDE) può essere facilmente installato, non ha dipendenze in Kubuntu 18.04 e può essere usato come root.

sudo apt install krusader

Sotto i suoi strumenti ha l'opzione "Root".

inserisci qui la descrizione dell'immagine

che richiede la password in una GUI.

Per aggiungere un menu di scelta rapida in Dolphin, creare la cartella ~/.local/share/kservices5/ServiceMenuse quindi fare

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

e aggiungi

[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

Per qualche motivo kdesu krusadernon funziona, e da qui ho usato la soluzione . Ciò che funziona è anche konsole -e sudo krusader, ma questo mostra il terminale invece di una GUI per la richiesta della password.

Quindi, vedrai in Dolphin:

inserisci qui la descrizione dell'immagine

portando una finestra di dialogo

inserisci qui la descrizione dell'immagine

che è quello che funziona ..


4

Ho creato la mia versione in base alle risposte sopra. Quindi, per aggiungere un menu contestuale per aprire Dolphin come root, segui questi passaggi:

  • Creare un file chiamato ad esempio DolphinAsRoot.desktopnella directory~/.local/share/kservices5/ServiceMenus/
  • Con un editor di testo inserisci il seguente contenuto:
[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
  • Se non viene ancora visualizzato nel menu di scelta rapida di Dolphin, seleziona "Impostazioni -> Configura Dolphin ...-> Servizi" e attiva l'opzione che hai aggiunto di recente. Dovrebbe essere lì. In caso contrario, chiudere Dolphin o addirittura disconnettersi e accedere alla sessione.

Questo è tutto, spero che ti aiuti tutti come mi ha aiutato;)


0

Tutto quello che ho fatto è stato aggiungere il Terminale alla barra degli strumenti (anche se la scorciatoia da tastiera associata a F4) e usare la riga di comando per eseguire operazioni come sudo come richiesto.

Così

Sì, potrebbe non essere altrettanto conveniente, ma ti costringe a iniziare a imparare la riga di comando mentre ti dà una rappresentazione visiva di come funziona effettivamente il comando.

Questo è su Arch ma la funzionalità dovrebbe essere la stessa su Ubuntu. Spero che abbia aiutato.


0

ecco una soluzione alternativa per Dolphin 17.x:

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

vattene libkdeinit5_dolphin.soda qui

Testato da me, funziona benissimo in Ubuntu bionic.

fonte


0

È banale!

Guarda il codice sorgente di kate e kwrite:

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

Nelle prime righe di codice direttamente all'inizio della funzione "principale", troverai:

/**
 * 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 non è diverso, tranne questo accade in libkdeinit5_dolphin.so.

Quindi correre come root è banale, tutto ciò che dobbiamo fare è saltare il controllo if uid = 0.

Il modo in cui lo facciamo, è perma-patching kate, kwrite e delfino.
Quindi, la prima cosa che facciamo è scaricare il contenuto binario in un file di testo:

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

Ora puoi guardare il file con gedit ~/kate.txte se cerchi getuid, troverai qualcosa del tipo:

   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>

Ora, sul lato sinistro, trovi l'indirizzo di memoria, dopo i due punti (:) vedrai il codice di istruzione binario (esadecimale) ea destra di quello, vedi lo smontaggio di quel codice (noto anche come significa) .

Ora, vedi, lì chiama getuid, verifica se questo è zero e passa all'istruzione if, vale a dire se il valore restituito è uguale a zero (je: salta se uguale).

Ora non vogliamo saltare nel if, quindi rimuoviamo solo quella merda lì. Ma solo rimuovere quella schifezza cambierebbe gli indirizzi di 6 byte, eliminando eventuali salti relativi nel programma nel processo e, di conseguenza, il programma. Quindi, invece, basta sostituire l'intera lunghezza dell'istruzione jump con le istruzioni NOP (abbreviazione di N o Op eration), ovvero 0x90 in codice istruzione / hex.

Quindi è necessario sostituire ogni byte di salto lì con 0x90, quindi in precedenza

0f 84 e9 1e 00 00

tu avrai

90 90 90 90 90 90

Questo può essere fatto semplicemente con un editor esadecimale.
Quindi ne installiamo uno:

sudo apt-get install wxhexeditor

Ora nell'editor esadecimale, cerchi 0f 84 e9 1e 00 00 e lo sostituisci con 90 90 90 90 90 90 90. Se c'è solo una ricorrenza di 0f 84 e9 1e 00 00, e c'è, allora è banalmente semplice. Basta cambiare i byte in esadecimale in 90 90 90 90 90 90 90 e salvare. Finito. Kate o Kwrite ora si apriranno, che tu sia root o meno.

se fai lo stesso con i delfini, ti renderai conto che objdump -Crd /usr/bin/dolhinproduce uno smontaggio molto breve.

se corri ldd /usr/bin/dolphin, vedrai che dolphin carica la libreria condivisa libkdeinit5_dolphin.so

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

Quindi fai objdump su libkdeinit5_dolphin.so:

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

Ora apri l'objdump: gedit ~/libkdeinit5_dolphin.txt

Cerca getuid e vedrai che uno dei risultati della ricerca è:

   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

Questo è fantastico, vedi, più schifezze proprio come in Kate e Kwrite.
Ora apri /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.sonel tuo editor esadecimale, cercalo 0f 84 58 1a 00 00e sostituiscilo con 90 90 90 90 90 90.
Hit salva, e fatto.

Dolphin ora funziona come root.

Nota: è una buona idea fare una copia di backup dei file modificati, nel caso in cui si risolva il problema.

Inoltre, puoi semplicemente scaricare il sorgente di kate, kwrite e delfino, rimuovere quella merda dal codice sorgente, compilare e installare. Ma poiché allo stupido sistema cmake mancano alcuni modelli di schifezze schifose per alcune stupide schifezze come le icone, probabilmente perché il cmake fornito dal repo è troppo vecchio, questo non funziona. Peccato, sarebbe stato troppo semplice se avesse funzionato, no.

Ma solo patchare gli eseguibili come ho descritto è più veloce, quindi chi se ne frega comunque.

Vedi, non è semplice, ma è banale.

PS:
Ora, ogni volta che kate, kwrite o dolphin vengono aggiornati tramite apt, le tue modifiche verranno sovrascritte. Dovrai riapplicarli. Lascerò automatizzare il processo di patch nelle tue mani più che capaci, e il tuo linguaggio di programmazione di joice;)

Questo può essere fatto in puro bash?

Inoltre, se vuoi patch vlc per la stessa schifezza, puoi farlo con sed:

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

Basta inserire quella dichiarazione sed in uno script, in modo da poter applicare nuovamente, se mai è necessario, se si è offline e non si ha accesso a Internet.

Happy hacking - con kate, kwrite e delfini - come root - mentre guardi / ascolti qualcosa su vlc.

PS2:
I controlli di root scadenti sono andati come Dodo in KDE v19.04.
Chi ha detto che n evoluzione è stata una brutta cosa.
Per progredire - Saluti!


0

Non una soluzione, ma un suggerimento .... Modificare Dolphin e file è piuttosto rischioso. Double Commander è un'ottima alternativa e si trova nel repository. Si installerà senza problemi di root. Per ottenere il root, basta inserire 'sudo doublecmd' nel terminale. Ha molti vantaggi quando si lavora con file di grandi dimensioni e milioni di file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.