Как запустить Dolphin от имени пользователя root?

14

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

Анкур С
источник
Какую версию Ubuntu вы используете?
Джордж Удосен
1
Вы используете Wayland? по умолчанию wayland не позволяет программам с графическим интерфейсом работать от имени пользователя root.
Ревери
не работает возможность создавать или перемещать файлы просто неактивна в контекстном меню. Пожалуйста, проверьте свою версию
Ankur S
Я использую Ubuntu 17.10 и x11 с установленным kde
Ankur S
2
«Так как я могу запустить дельфина как root для копирования или удаления файлов?» Пожалуйста, переоцените этот вопрос. Используйте командную строку для задач администратора. Это там специально для задач администратора. Графические инструменты не должны использоваться для задач администратора. Запуск графических инструментов в качестве администратора имеет непредвиденные побочные эффекты в отношении разрешений, и в последнее время считается, что разработчики активно блокируют его. Вы действительно думаете, что это хорошая идея - идти против людей, которые знают (или должны знать;)), что именно может делать инструмент для работы с графическими файлами?
Rinzwind

Ответы:

11

Короткий:

Дельфин 17.04

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

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

Обходной путь

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

Дельфин 18.08

Несколько запросов на рассмотрение

  • Повторно разрешите запуск Dolphin от имени пользователя root (но все еще не используете sudo): https://phabricator.kde.org/D12795

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

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 от имени root с помощью Kubuntu или KDE neon? - 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, написанная Мартином Грисслином

Запретить выполнение 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/

Обойти «Выполнение Dolphin от имени root невозможно» и восстановить привилегии KDE Dolphin Root: https://www.reddit.com/r/kde/comments/6xs3mp/bypass_executing_dolphin_as_root_is_not_possible/

Будущее

Поддержка Polkit в KIO: https://phabricator.kde.org/T6561

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

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

user26687
источник
1
Не могли бы вы подробнее рассказать о «По соображениям безопасности»?
Джим МакАдамс
Вы читали phabricator.kde.org/... . То же / больше: Martin Grässlin - Редактирование файлов с правами root: blog.martin-graesslin.com/blog/2017/02/editing-files-as-root
user26687
Итак, простой ответ: «Вы не можете запустить Dolphin от имени пользователя root, если не установите исправленную версию»?
@ user47206: Почему бы не исправить это самостоятельно? ;) Смотрите мой ответ ниже!
WitchCraft
10

Не ответ, просто обходной путь для цели, указанной в OP ( 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».

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

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

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

Тогда вы увидите в Dolphin:

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

принося диалог

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

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


источник
4

Я сделал свою собственную версию, основанную на ответах выше. Итак, чтобы добавить контекстное меню, чтобы открыть 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 или даже выйдите и войдите в свой сеанс.

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

Хуан Гомес Каррильо
источник
0

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

Вот так

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

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

swordkorn
источник
0

вот обходной путь для Dolphin 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 Bionic.

источник

eadmaster
источник
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;
}

Dolphin ничем не отличается, за исключением того, что это происходит в libkdeinit5_dolphin.so.

Так что запуск от имени root тривиален, все, что нам нужно сделать, это пропустить проверку if uid = 0.

То, как мы это делаем, - это исправление perma-patching kate, kwrite и dolphin.
Итак, первое, что мы делаем, это дамп двоичного содержимого в текстовый файл:

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

Это можно сделать просто с помощью hex-редактора.
Итак, мы устанавливаем один:

sudo apt-get install wxhexeditor

Теперь в шестнадцатеричном редакторе вы ищете 0f 84 e9 1e 00 00 и заменяете его на 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, вы увидите, что 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.
Хит сохранить, и готово.

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

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

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

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

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

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

Можно ли это сделать в чистом виде?

Также, если вы хотите исправить vlc для того же дерьма, вы можете сделать это с помощью sed:

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

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

Удачного взлома - с kate, kwrite и dolphin - с правами root - во время просмотра / прослушивания чего-либо на vlc.

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

колдовство
источник
0

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

Роб Грун
источник