Как запустить Дельфина от имени root?

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

11
задан 29 December 2017 в 20:33

7 ответов

Короткий:

Дельфин 17.04

У дельфина 17.04 или позже есть проверка:

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

Обходное решение

Вы могли отредактировать источники и отключить проверку. Затем дельфин будет работать как прежде.

Дельфин 18.08

Немногие рассматривают запрос

  • Повторно разрешите рабочего дельфина как пользователя root (но все еще не использующий sudo): https://phabricator.kde.org/D12795

  • Покажите предупреждение при выполнении как пользователь root: https://phabricator.kde.org/D12732

Дельфин 18.08.0 использует эти изменения, и дельфин может быть запущен с командой pkexec как административный суперпользователь.

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

Еще: KDE Foruns - Как выполнить дельфина 18.08 как корень с неоном Kubuntu или KDE? - https://forum.kde.org/viewtopic.php? f=224&t=153655

enter image description here

Фон:

Ранее - Форумы KDE - Как выполнить дельфина как корень?: https://forum.kde.org/viewtopic.php? f=224&t=141836

Из соображений безопасности: Запретите выполняющегося дельфина как корень на Linux - https://cgit.kde.org/dolphin.git/commit/? id=0bdd8e0b0516555c6233fdc7901e9b417cf89

Запретите выполняющегося дельфина как корень на Linux В основном копия фиксации kate/9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e, который был записан Martin Grässlin

Запретите выполнение kate и kwrite как корень на Linux: https://phabricator.kde.org/R40:9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e

Больше подсказок

KDE Reddit - Корень дельфина на Приложении 17.04 KDE: https://www.reddit.com/r/kde/comments/6785b1/dolphin_root_on_kde_app_1704/

Обходной "Выполняющийся дельфин как корень не возможен", и Возвратите Полномочия пользователя root дельфина KDE: 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:

enter image description here

8
ответ дан 29 December 2017 в 20:33

Не ответ, а обходной путь для цели, упомянутой в ОП (copying or deleting files).

Идея состоит в том, чтобы

  1. установить другой менеджер файлов, который не имеет такого ограничения и который не приносит много зависимостей

  2. создайте контекстное меню «Открыть как корень» в Dolphin для этого другого файлового менеджера.

Можно использовать главные файловые менеджеры других рабочих столов (Nautilus, Nemo, Caja, Thunar), но они приносят некоторые зависимости. Даже PCManFM и PCManFM-Qt делают это. Если вам нужен один из них для каких-то других целей, добавьте, что это может быть хорошим решением.

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

sudo apt install krusader

Под инструментами у него есть опция «Root».

enter image description here

, который запрашивает пароль в графическом интерфейсе.

Чтобы добавить контекстное меню в Dolphin, создайте папку ~/.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, но это показывает терминал вместо графического интерфейса для запроса пароля.

Затем вы увидите в «Дельфине»:

enter image description here

с диалоговым окном

enter image description here

, который работает ..

7
ответ дан 29 December 2017 в 20:33

Я сделал свою собственную версию на основе ответов выше. Итак, чтобы добавить контекстное меню в , откройте 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
  • Если оно все еще не отображается в контекстном меню в Dolphin, перейдите в «Настройки -> Настроить Dolphin ...». -> Услуги "и активируйте опцию, которую вы недавно добавили. Это должно быть там. Если нет, закройте Dolphin или даже выйдите и войдите в свой сеанс.

Это все, я надеюсь, что это поможет вам всем, как это помогло мне;)

3
ответ дан 29 December 2017 в 20:33

Alls, который я сделал, был, добавляет Терминал к панели инструментов (хотя сочетание клавиш, связанное с F4), и использовал командную строку для выполнения операций как sudo как требуется.

Как так

Да это не могло бы быть столь же удобно, но это вынуждает Вас начать изучать командную строку при предоставлении Вам визуального представления того, как команда на самом деле работает.

Это находится на Arch, но функциональность должна быть тем же на Ubuntu. Надеюсь, что помог.

0
ответ дан 23 November 2019 в 03:58

здесь это - обходное решение для дельфина 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
ответ дан 23 November 2019 в 03:58

Это тривиально!

Только посмотрите на исходный код 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.

Столь рабочий, как корень тривиален, все, которое мы должны сделать, пропустить, если uid=0 проверяют.

Путем мы делаем это, исправлением пермы kate, kwrite и дельфином.
Так, первая вещь, которую мы делаем, выводит двоичное содержание к текстовому файлу:

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: перейдите если равный).

Теперь мы не хотим вскакивать, если, таким образом, мы просто удаляем то дерьмо туда. Но просто удаление того дерьма изменило бы адреса на 6 байтов, повредив любые относительные переходы в программе в процессе, и как следствие, программе. Так вместо этого Вы просто заменяете всю длину оператора перехода с NOP (короткий ни для Какой Операции) инструкции, иначе 0x90 в системе команд / шестнадцатеричное число.

Таким образом, необходимо заменить каждый байт перехода там 0x90 поэтому, где Вы ранее имели

0f 84 e9 1e 00 00

Вы будете иметь

90 90 90 90 90 90

Это может быть сделано просто с Hex-редактором.
Таким образом, мы устанавливаем тот:

sudo apt-get install wxhexeditor

Теперь в Hex-редакторе, Вы ищете 0f 84 e9 1e 00 00 и замену это с 90 90 90 90 90 90. Если существует только один occurency 0f 84 e9 1e 00 00, и существует, то это тривиально просто. Просто измените байты в шестнадцатеричном числе к 90 90 90 90 90 90 и сохраните. Законченный. Kate или kwrite теперь откроются, являетесь ли Вы корнем или нет.

если Вы сделаете то же с дельфином, то Вы поймете 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 в Вашем Hex-редакторе искать 0f 84 58 1a 00 00 и замените его 90 90 90 90 90 90.
Хит сохраняет, и сделанный.

Дельфин теперь работает как корень.

Примечание: Хорошая идея сделать резервную копию файлов Вы изменяете, на всякий случай Вы f ***.

Кроме того, Вы могли просто загрузить источник kate, kwrite, и дельфина, удалить то дерьмо из исходного кода, скомпилировать и установить. Но так как глупая cmake система пропускает некоторый дрянной загаженный шаблон для небольшого количества глупого дерьма, такого как значки, вероятно, потому что repo-предоставленный cmake слишком стар, это не работает. Слишком плохо, было бы слишком просто, если это просто работало, не был бы он.

Но просто исправив исполняемые файлы, поскольку я описал, быстрее, поэтому кто заботится так или иначе.

Вы видите, это не просто, но это тривиально.

PS:
Теперь, любое время kate, kwrite или дельфин обновляются через Кв., Ваши изменения будут перезаписаны. Необходимо будет повторно применить их. Я оставлю автоматизацию процесса патча в Ваших больше, чем способные руки и Вашем языке программирования joice ;)

Это может быть сделано в чистом ударе?

Кроме того, если Вы хотите исправить vlc для того же дерьма, можно сделать это с sed:

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

Просто помещенный, что sed-оператор в сценарий, таким образом, можно повторно применяться, если Вам когда-нибудь нужно к тому, если Вы в режиме офлайн и не имеете никакого доступа в Интернет.

Счастливое взламывание - с kate, kwrite и дельфином - как корень - при наблюдении/слушании чего-то на vlc.

PS2:
Дрянные корневые проверки пошли путем Дронта в KDE v19.04.
Кто сказал, что nevolution был плохой вещью.
Прогрессировать - За Ваше здоровье!

0
ответ дан 23 November 2019 в 03:58

Не решение, а предложение.... Изменение Dolphin и файлов довольно рискованно. Double Commander — отличная альтернатива, которую можно найти в репозитории. Он будет установлен без root-прав. Чтобы получить root, просто введите «sudo doublecmd» в терминале. Он имеет много преимуществ при работе с большими и миллионами файлов.

0
ответ дан 18 May 2020 в 03:09

Другие вопросы по тегам:

Похожие вопросы: