Як запустити Дельфіна як корінь?


14

В даний час я використовую, dolphin 17.04.3і коли я запускаю його як sudo, він видає таку помилку, Executing Dolphin as root is not possible.не пояснюючи, чому або не дає альтернативи. Тож як я можу запустити дельфіна як корінь для копіювання чи видалення файлів?


Яку версію Ubuntu ви використовуєте?
Джордж Удосен

1
ти використовуєш Wayland? за замовчуванням wayland не дозволяє програмам GUI запускатися як root.
ravery

не працює. опція створення або переміщення файлів просто затьмарена в контекстному меню. Перевірте свою версію
Ankur S

Я використовую ubuntu 17.10 та x11 з встановленим kde
Ankur S

2
"Тож як я можу запустити дельфіна як корінь для копіювання чи видалення файлів?" Будь ласка, переоцініть це питання. Використовуйте командний рядок для завдань адміністратора. Саме там спеціально для адміністраторських завдань. Графічні інструменти не слід використовувати для завдань адміністратора. Запуск графічних інструментів як адміністратор має небачені побічні ефекти щодо дозволів, а пізніше вважається таким, що розробники активно блокують його. Ви дійсно вважаєте, що це гарна ідея проти людей, які знають (або повинні знати) саме те, що може і робить графічний інструмент для маніпуляцій із графічними файлами?
Rinzwind

Відповіді:


11

Короткий:

Дельфін 17.04

Дельфін 17.04 або пізнішої версії має чек:

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

Обхідний шлях

Ви можете редагувати джерела та відключити чек. Тоді Дельфін буде працювати, як і раніше.

Дельфін 18.08

Трохи запит на розгляд

Dolphin 18.08.0 використовує ці зміни, і Dolphin можна запустити за допомогою команди pkexec як адміністративного суперкористувача.

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

Докладніше: KDE Foruns - Як запустити Dolphin 18.08 як корінь з Kubuntu або KDE неоном? - https://forum.kde.org/viewtopic.php?f=224&t=153655

введіть тут опис зображення

Фон:

Раніше - Форуми KDE - Як запустити Dolphin як root ?: https://forum.kde.org/viewtopic.php?f=224&t=141836

З міркувань безпеки: забороніть виконувати Dolphin як root на Linux - https://cgit.kde.org/dolphin.git/commit/?id=0bdd8e0b0516555c6233fdc7901e9b417cf89

Заборонити виконання Dolphin як root на Linux В основному це копія commit kate / 9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e, яку написав Martin Grässlin

Заборонити виконання kate та kwrite як root у Linux: https://phabricator.kde.org/R40:9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e

Більше порад

KDE Reddit - Корінь дельфінів у додатку KDE 17.04: https://www.reddit.com/r/kde/comments/6785b1/dolphin_root_on_kde_app_1704/

Обхід "Виконання дельфіна як корінь неможливо" та відновити кореневі привілеї KDE Dolphin: https://www.reddit.com/r/kde/comments/6xs3mp/bypass_executing_dolphin_as_root_is_not_possible/

Майбутнє

Підтримка Polkit в KIO: https://phabricator.kde.org/T6561

Коли він буде готовий, Дельфін покаже запит на пароль при необхідності. Тепер, з виправленими Dolphin & KIO:

введіть тут опис зображення


1
Не могли б ви детальніше розібратися у "З міркувань безпеки"?
Jim McAdams

Ви читали phabricator.kde.org / ... . Те саме / більше: Martin Grässlin - Редагування файлів як root: blog.martin-graesslin.com/blog/2017/02/editing-files-as-root
користувач26687

Отже, проста відповідь - "Ви не можете запустити Dolphin як root, якщо не встановите виправлену версію"?

@ user47206: Чому б не виправити це? ;) Дивіться мою відповідь нижче!
WitchCraft

10

Не відповідь, а лише вирішення мети, зазначеної в ОП ( copying or deleting files).

Ідея полягає в тому, щоб

  1. встановіть ще один керований файл, який не має цього обмеження і не приносить великої кількості залежностей

  2. створити контекстне меню "Відкрити як корінь" у Dolphin для цього іншого файлового менеджера.

Можна використовувати основні файлові менеджери інших настільних ПК (Nautilus, Nemo, Caja, Thunar), але вони приносять певні залежності. Навіть PCManFM і PCManFM-Qt роблять це. Якщо вам потрібна одна з тих, хто для інших цілей, додайте, що це може бути хорошим рішенням.

Я виявив, що Krusader (який, як я вважаю, раніше встановлювався за замовчуванням у деяких системах KDE), можна легко встановити, не приносить залежностей у Kubuntu 18.04 і може використовуватися як root.

sudo apt install krusader

Під його інструментами є опція "Root".

введіть тут опис зображення

який запитує пароль у gui.

Щоб додати контекстне меню в дельфіні, створіть папку ~/.local/share/kservices5/ServiceMenusта виконайте це

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

і додати

[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

Чомусь kdesu krusaderне працює, і я використав рішення тут . Що також працює konsole -e sudo krusader, але це показує термінал замість gui для запиту пароля.

Потім ви побачите в Дельфіні:

введіть тут опис зображення

приведення діалогу

введіть тут опис зображення

яка працює.


5

Я створив свою власну версію, грунтуючись на відповідях вище. Отже, щоб додати контекстне меню, щоб відкрити Dolphin як root, виконайте наступні дії:

  • Створіть файл, викликаний, наприклад, DolphinAsRoot.desktopу каталозі~/.local/share/kservices5/ServiceMenus/
  • За допомогою текстового редактора розмістіть на ньому такий вміст:
[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
  • Якщо воно все ще не відображається в контекстному меню в Дельфіні, перейдіть до "Налаштування -> Налаштувати Дельфін ...-> Послуги" та активуйте опцію, яку ви нещодавно додали. Це повинно бути там. Якщо ні, закрийте Дельфіна або навіть вийдіть із системи та увійдіть у свій сеанс.

Це все, я сподіваюся, що це допомагає вам усім, як це допомогло мені;)


0

Все, що я зробив, було додати термінал на панель інструментів (хоча комбінація клавіш пов'язана з F4) і використовувати командний рядок для виконання операцій sudo в міру необхідності.

Як так

Так, це може бути не так зручно, але це змушує вас почати вивчати командний рядок, надаючи наочне уявлення про те, як команда насправді працює.

Це в Arch, але функціональність повинна бути однаковою для Ubuntu. Сподіваюся, що це допомогло.


0

ось це рішення для Дельфіна 17.x:

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

отримати libkdeinit5_dolphin.soвід сюди

Випробуваний мною, він чудово працює в біонічному Ubuntu.

джерело


0

Це банально!

Просто подивіться на вихідний код kate та kwrite:

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

У перших рядках коду безпосередньо на початку "основної" функції ви знайдете:

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

Дельфін не відрізняється, за винятком випадків, коли це відбувається в libkdeinit5_dolphin.so.

Отже, як root є тривіальним, все, що нам потрібно зробити, - пропустити прапорець if uid = 0.

Як ми це робимо, - це за допомогою перманентної патчі кате, квірте та дельфіна.
Отже, перше, що ми робимо, - це скидання бінарного вмісту в текстовий файл:

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

Тепер ви можете переглянути файл за допомогою gedit ~/kate.txt, і якщо ви шукаєте getuid, ви знайдете щось на зразок:

   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>

Тепер, з лівого боку, ви знаходите адресу пам'яті, після двокрапки (:) ви побачите двійковий код інструкцій (шістнадцятковий), а праворуч від цього ви побачите демонтаж цього коду (він же що це означає) .

Тепер, ви бачите, там він викликає getuid, тестує, якщо це дорівнює нулю, і стрибає в оператор if, тобто, якщо значення повернення дорівнює нулю (je: jump, якщо рівне).

Тепер ми не хочемо стрибати у if, тому просто видалимо цю лайно там. Але лише видалення цього лайна змінило б адреси на 6 байт, проміняючи будь-які відносні стрибки програми в процесі, і, як наслідок, програму. Так що замість того, щоб просто замінити всю довжину заяви стрибка з NOP (скорочено N O Op кість) інструкції, ака 0x90 в інструкції коду / гекс.

Тож вам потрібно замінити кожен байт стрибка на 0x90, так що раніше у вас був

0f 84 e9 1e 00 00

Ви будете мати

90 90 90 90 90 90

Це можна зробити просто за допомогою шестигранного редактора.
Отже, ми встановлюємо один:

sudo apt-get install wxhexeditor

Тепер у шестигранному редакторі ви шукаєте 0f 84 e9 1e 00 00 і замінюєте його на 90 90 90 90 90 90 90. Якщо є лише одна частота 0f 84 e9 1e 00 00, і є, то це тривіально просто. Просто змініть байти в шістнадцяткові на 90 90 90 90 90 90 і збережіть. Готово. Kate або kwrite тепер відкриються, незалежно від того, ви root або ні.

якщо ви зробите те ж саме з дельфіном, ви зрозумієте, що objdump -Crd /usr/bin/dolhinвиробляються дуже короткі розбирання.

якщо ви запустите ldd /usr/bin/dolphin, ви побачите, що дельфін завантажує спільну бібліотеку libkdeinit5_dolphin.so

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

Отже, ви зробите objdump на libkdeinit5_dolphin.so:

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

Тепер відкрийте objdump: gedit ~/libkdeinit5_dolphin.txt

Шукайте getuid, і ви побачите, що одним із результатів пошуку є:

   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

Це чудово, бачите, більше лайно, як у kate та kwrite.
Тепер відкрийте /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.soу своєму шестигранному редакторі, знайдіть 0f 84 58 1a 00 00і замініть його 90 90 90 90 90 90.
Натисніть зберегти, і зробіть.

Дельфін зараз працює як корінь.

Примітка. Хороша ідея зробити резервну копію файлів, які ви змінюєте, на всякий випадок, якщо ви зробите це.

Крім того, ви можете просто завантажити джерело kate, kwrite та дельфіна, видалити це лайно з вихідного коду, зібрати та встановити. Але оскільки в системі дурного cmake не вистачає шаленого шахрайського шаблону для дурного лайна, такого як іконки, можливо, тому що cmake, що постачається повторно, занадто старий, це не працює. Шкода, було б занадто просто, якби це просто працювало, чи не так.

Але просто виправлення виконуваних файлів, як я описав, швидше, тому кого все одно це хвилює.

Розумієте, це не прямо, але банально.

PS:
Тепер, коли будь-який час Kate, Kwrite або дельфін буде оновлено apt, ваші зміни будуть перезаписані. Вам потрібно буде застосувати їх повторно. Я залишаю автоматизувати патч-процес у ваших більш ніж здатних руках та вашій мові програмування веселощів;)

Чи можна це зробити в чистому стилі?

Крім того, якщо ви хочете виправити vlc за той самий лайн, ви можете зробити це за допомогою sed:

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

Просто покладіть цю заяву sed у сценарій, щоб ви могли повторно подати заявку, якщо вам це знадобиться, якщо ви офлайн і не маєте доступу в Інтернет.

Щасливе злому - з kate, kwrite та дельфіном - як root - під час перегляду / прослуховування чогось на vlc.

PS2:
шалені кореневі перевірки пройшли шлях Dodo в KDE v19.04.
Хто сказав, що російська еволюція була поганою справою.
До прогресу - ура!


0

Не рішення, а пропозиція .... Змінити дельфіни та файли досить ризиковано. Double Commander - відмінна альтернатива, і він знаходиться в сховищі. Він буде встановлений без кореневих дозволів. Щоб отримати root, просто введіть 'sudo doublecmd' у терміналі. Він має багато переваг при роботі з великими і мільйонними файлами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.