Jak uruchomić Dolphin jako root?

14

Obecnie używam dolphin 17.04.3i za każdym razem, gdy uruchamiam go jako sudo, pojawia się następujący błąd Executing Dolphin as root is not possible.bez wyjaśnienia przyczyny lub podania alternatywy. Jak mogę uruchomić delfina jako root do kopiowania lub usuwania plików?

Ankur S.
źródło
Jakiej wersji Ubuntu używasz?
George Udosen
1
czy używasz waylanda? domyślnie wayland nie zezwala na uruchamianie programów GUI jako root.
pustkowie
nie działa opcja tworzenia lub przenoszenia plików jest po prostu wyszarzona w menu kontekstowym. Sprawdź swoją wersję
Ankur S
Używam Ubuntu 17.10 i x11 z zainstalowanym KDE
Ankur S
2
„Więc jak mogę uruchomić delfina jako root do kopiowania lub usuwania plików?” Proszę ponownie ocenić to pytanie. Użyj wiersza polecenia do zadań administracyjnych. Jest tam specjalnie do zadań administracyjnych. Do zadań administracyjnych nie należy używać narzędzi graficznych. Uruchomienie narzędzi graficznych jako administrator ma niewidoczne skutki uboczne dotyczące uprawnień, a ostatnio uważa się, że programiści aktywnie je blokują. Czy naprawdę uważasz, że dobrym pomysłem jest przeciwstawić się ludziom, którzy wiedzą (lub powinni wiedzieć;)) dokładnie, co potrafi i robi narzędzie do manipulacji plikami graficznymi?
Rinzwind

Odpowiedzi:

11

Krótki:

Delfin 17.04

Dolphin 17.04 lub nowszy ma czek:

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

Obejście

Możesz edytować źródła i wyłączyć sprawdzanie. Wtedy Delfin będzie działał jak poprzednio.

Delfin 18.08

Mało prośby o sprawdzenie

Dolphin 18.08.0 używa tych zmian, a Dolphin można uruchomić za pomocą komendy pkexec jako superużytkownik administracyjny.

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

Więcej: KDE Foruns - Jak uruchomić Dolphin 18.08 jako root z Kubuntu lub KDE neon? - https://forum.kde.org/viewtopic.php?f=224&t=153655

wprowadź opis zdjęcia tutaj

Tło:

Wcześniej - Fora KDE - Jak uruchomić Dolphin jako root ?: https://forum.kde.org/viewtopic.php?f=224&t=141836

Ze względów bezpieczeństwa: nie zezwalaj na uruchamianie Dolphin jako root w systemie Linux - https://cgit.kde.org/dolphin.git/commit/?id=0bdd8e0b0516555c6233fdc7901e9b417cf89

Nie zezwalaj na uruchamianie Dolphin jako root w Linuksie Zasadniczo kopia commit kate / 9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e napisana przez Martina Grässlina

Zabroń wykonywania Kate i Kwrite jako root w systemie Linux: https://phabricator.kde.org/R40:9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e

Więcej porad

KDE Reddit - root delfinów w aplikacji KDE 17.04: https://www.reddit.com/r/kde/comments/6785b1/dolphin_root_on_kde_app_1704/

Ominięcie „Wykonywanie Dolphin jako root nie jest możliwe” i odzyskanie uprawnień rootowania KDE Dolphin: https://www.reddit.com/r/kde/comments/6xs3mp/bypass_executing_dolphin_as_root_is_not_possible/

Przyszłość

Obsługa Polkit w KIO: https://phabricator.kde.org/T6561

Gdy będzie gotowy, Dolphin wyświetli zapytanie o hasło, jeśli to konieczne. Teraz z łatką Dolphin & KIO:

wprowadź opis zdjęcia tutaj

użytkownik26687
źródło
1
Czy mógłbyś rozwinąć nieco więcej informacji na temat „Ze względów bezpieczeństwa”?
Jim McAdams
Czy czytałeś phabricator.kde.org/… . To samo / więcej: Martin Grässlin - Edycja plików jako root: blog.martin-graesslin.com/blog/2017/02/editing-files-as-root
user26687
więc prosta odpowiedź brzmi: „nie możesz uruchomić Dolphin jako root, chyba że zainstalujesz łataną wersję”?
@ user47206: Dlaczego nie załatać go samemu? ;) Zobacz moją odpowiedź poniżej!
WitchCraft,
10

Nie odpowiedź, tylko obejście dla celu wspomnianego przez OP ( copying or deleting files).

Chodzi o to, aby

  1. zainstaluj inny menedżer plików, który nie ma tego ograniczenia i nie przynosi wielu zależności

  2. utwórz menu kontekstowe „Otwórz jako root” w programie Dolphin dla tego innego menedżera plików.

Można używać głównych menedżerów plików innych komputerów stacjonarnych (Nautilus, Nemo, Caja, Thunar), ale powodują one pewne zależności. Robią to nawet PCManFM i PCManFM-Qt. Jeśli potrzebujesz jednego z nich w innym celu, dodaj, że może być dobrym rozwiązaniem.

Odkryłem, że Krusader (który myślę, że kiedyś był instalowany domyślnie w niektórych systemach KDE) może być łatwo zainstalowany, nie powoduje żadnych zależności w Kubuntu 18.04 i może być używany jako root.

sudo apt install krusader

W swoich Narzędziach ma opcję „Root”.

wprowadź opis zdjęcia tutaj

który prosi o hasło w GUI.

Aby dodać menu kontekstowe w delfinie, utwórz folder, ~/.local/share/kservices5/ServiceMenusa następnie zrób

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

i dodaj

[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

Z jakiegoś powodu kdesu krusadernie działa, i użyłem roztwór z tutaj .. Co działa też jest konsole -e sudo krusader, ale to pokazuje terminal zamiast GUI dla hasła szybka.

Następnie zobaczysz w Dolphin:

wprowadź opis zdjęcia tutaj

prowadzenie dialogu

wprowadź opis zdjęcia tutaj

który działa ..


źródło
5

Stworzyłem własną wersję na podstawie powyższych odpowiedzi. Aby dodać menu kontekstowe, aby otworzyć Dolphin jako root, wykonaj następujące kroki:

  • Utwórz plik o nazwie np. DolphinAsRoot.desktopW katalogu~/.local/share/kservices5/ServiceMenus/
  • Za pomocą edytora tekstu umieść na nim następującą treść:
[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
  • Jeśli nadal nie pojawia się w menu kontekstowym w Dolphin, przejdź do „Ustawienia -> Konfiguruj Dolphin ...-> Usługi” i aktywuj ostatnio dodaną opcję. Powinno tam być. Jeśli nie, zamknij Dolphin lub nawet wyloguj się i zaloguj w sesji.

To wszystko, mam nadzieję, że to pomoże wam wszystkim, tak jak pomogło mi;)

Juan Gómez Carrillo
źródło
0

Wszystko, co zrobiłem, to dodanie terminala do paska narzędzi (chociaż skrót klawiaturowy jest związany z klawiszem F4) i skorzystałem z wiersza poleceń, aby wykonać operacje tak sudo, jak to konieczne.

Podoba mi się

Tak, to może nie być tak wygodne, ale zmusza cię do rozpoczęcia nauki wiersza poleceń, jednocześnie dając wizualną reprezentację tego, jak naprawdę działa to polecenie.

To jest na Arch, ale funkcjonalność powinna być taka sama na Ubuntu. Mam nadzieję, że to pomogło.

miecznik
źródło
0

oto obejście dla Dolphin 17.x:

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

dostać libkdeinit5_dolphin.sood tutaj

Przetestowany przeze mnie działa dobrze w Ubuntu bionic.

źródło

eadmaster
źródło
0

To banalne!

Wystarczy spojrzeć na kod źródłowy Kate i Kwrite:

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

W pierwszych wierszach kodu bezpośrednio na początku funkcji „głównej” znajdziesz:

/**
 * 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;
}

Delfin nie jest inny, z wyjątkiem tego, co dzieje się w libkdeinit5_dolphin.so.

Więc uruchamianie jako root jest banalne, wystarczy, że pomiń sprawdzanie if uid = 0.

Sposób, w jaki to robimy, polega na łączeniu kate, kwrite i delfina z perma.
Pierwszą rzeczą, którą robimy, jest zrzut zawartości binarnej do pliku tekstowego:

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

Teraz możesz spojrzeć na plik za pomocą gedit ~/kate.txt, a jeśli szukasz getuid, znajdziesz coś takiego:

   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>

Teraz po lewej stronie znajduje się adres pamięci, po dwukropku (:) zobaczysz kod instrukcji binarnej (hex), a po prawej stronie zobaczysz dezasemblację tego kodu (czyli co to znaczy) .

Teraz widzisz, tam wywołuje getuid, sprawdza, czy jest to zero i przeskakuje do instrukcji if, to znaczy, czy zwracana wartość jest równa zero (je: jump if if).

Teraz nie chcemy wskakiwać do if, więc po prostu usuwamy te badziewia. Ale samo usunięcie tego badziewia zmieniłoby adresy o 6 bajtów, niszcząc wszelkie względne skoki w programie w procesie, aw konsekwencji program. Więc zamiast po prostu zastąpić całą długość rachunku skoku z NOP (skrót N ö op chłodnika) instrukcje, aka 0x90 w instrukcji / kod hex.

Musisz więc zastąpić każdy bajt skoku tam 0x90, tak jak poprzednio

0f 84 e9 1e 00 00

będziesz miał

90 90 90 90 90 90

Można to zrobić po prostu za pomocą edytora szesnastkowego.
Więc instalujemy jeden:

sudo apt-get install wxhexeditor

Teraz w edytorze szesnastkowym wyszukujesz 0f 84 e9 1e 00 00 i zamieniasz je na 90 90 90 90 90 90 90. Jeśli jest tylko jedno wystąpienie 0f 84 e9 1e 00 00 i jest, to jest to banalnie proste. Po prostu zmień bajty szesnastkowe na 90 90 90 90 90 90 i zapisz. Skończone. Kate lub kwrite otworzą się teraz, bez względu na to, czy jesteś rootem, czy nie.

jeśli zrobisz to samo z delfinem, zdasz sobie sprawę, że objdump -Crd /usr/bin/dolhinpowoduje bardzo krótki demontaż.

jeśli uruchomisz ldd /usr/bin/dolphin, zobaczysz, że delfin ładuje bibliotekę współdzieloną libkdeinit5_dolphin.so

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

Więc robisz objdump na libkdeinit5_dolphin.so:

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

Teraz otwórz objdump: gedit ~/libkdeinit5_dolphin.txt

Wyszukaj getuid, a zobaczysz, że jeden z wyników wyszukiwania to:

   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

Widzisz, jest to świetne bzdury, tak jak w przypadku Kate i Kwrite.
Teraz otwórz /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.sow edytorze szesnastkowym, wyszukaj 0f 84 58 1a 00 00i zamień na 90 90 90 90 90 90.
Naciśnij Zapisz i gotowe.

Dolphin działa teraz jako root.

Uwaga: dobrym pomysłem jest utworzenie kopii zapasowej modyfikowanych plików, na wypadek, gdybyś się pieprzył.

Możesz także pobrać źródło Kate, Kwrite i Dolphin, usunąć te bzdury z kodu źródłowego, skompilować i zainstalować. Ale ponieważ w głupim systemie cmake brakuje jakiegoś gównianego badziewia dla jakiegoś głupiego badziewia, takiego jak ikony, prawdopodobnie dlatego, że cmake dostarczany przez repozytorium jest za stary, to nie działa. Szkoda, byłoby zbyt proste, gdyby po prostu działało, prawda?

Ale łatanie plików wykonywalnych, tak jak to opisałem, jest szybsze, więc kogo to obchodzi.

Widzisz, to nie jest proste, ale jest banalne.

PS:
Teraz, za każdym razem, gdy Kate, Kwrite lub Delfin są aktualizowane przez apt, twoje zmiany zostaną nadpisane. Musisz je ponownie zastosować. Opuszczę automatyzację procesu łatania w twoich więcej niż zdolnych rękach i twoim języku programowania joice;)

Czy można to zrobić w czystym stylu?

Ponadto, jeśli chcesz załatać VLC dla tego samego badziewia, możesz to zrobić za pomocą sed:

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

Wystarczy umieścić tę instrukcję sed w skrypcie, abyś mógł ją ponownie złożyć, jeśli zajdzie taka potrzeba, jeśli jesteś offline i nie masz dostępu do Internetu.

Szczęśliwego hakowania - z Kate, Kwrite i delfinem - jako rootem - podczas oglądania / słuchania czegoś na VLC.

PS2:
Wstrętne kontrole rootów poszły w kierunku Dodo w KDE v19.04.
Kto powiedział, że n ewolucja było złe.
Do postępu - Pozdrawiam!

Czary
źródło
0

Nie rozwiązanie, ale sugestia ... Zmiana Delfina i plików jest dość ryzykowna. Double Commander to doskonała alternatywa, którą można znaleźć w repozytorium. Zainstaluje się bez rootowania. Aby uzyskać root, po prostu wpisz „sudo doublecmd” w terminalu. Ma wiele zalet podczas pracy z dużymi i milionami plików.

rob grune
źródło