¿Cómo ejecutar Dolphin como root?


14

Actualmente lo uso dolphin 17.04.3y cada vez que lo ejecuto como sudo, me da el siguiente error Executing Dolphin as root is not possible.sin explicar por qué o dar una alternativa. Entonces, ¿cómo puedo ejecutar dolphin como root para copiar o eliminar archivos?


¿Qué versión de Ubuntu estás usando?
George Udosen

1
estás usando wayland? Por defecto, wayland no permite que los programas GUI se ejecuten como root.
ravery

no funciona la opción para crear o mover archivos simplemente está atenuada en el menú contextual. Verifique su versión
Ankur S

Estoy usando ubuntu 17.10 y x11 con kde instalado
Ankur S

2
"Entonces, ¿cómo puedo ejecutar dolphin como root para copiar o eliminar archivos?" Por favor, vuelva a evaluar esta pregunta. Use la línea de comando para tareas administrativas. Está allí específicamente para tareas administrativas. Las herramientas gráficas no deben usarse para tareas administrativas. Ejecutar herramientas gráficas como administrador tiene efectos secundarios invisibles con respecto a los permisos y, en los últimos tiempos, se considera que los desarrolladores lo bloquean activamente. ¿Realmente crees que es una buena idea ir en contra de las personas que saben (o se supone que saben) exactamente) lo que una herramienta de manipulación de archivos gráficos puede y hace?
Rinzwind

Respuestas:


11

Corto:

Dolphin 17.04

El Dolphin 17.04 o posterior tiene un cheque:

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

Una solución alternativa

Puede editar las fuentes y deshabilitar la verificación. Entonces el Dolphin funcionará como antes.

Delfín 18.08

Poca solicitud de revisión

Dolphin 18.08.0 está utilizando estos cambios y Dolphin se puede iniciar con el comando pkexec como superusuario administrativo.

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

Más: KDE Foruns - ¿Cómo ejecutar Dolphin 18.08 como root con Kubuntu o KDE neon? - https://forum.kde.org/viewtopic.php?f=224&t=153655

ingrese la descripción de la imagen aquí

Antecedentes:

Anteriormente - Foros de KDE - ¿Cómo ejecutar Dolphin como root ?: https://forum.kde.org/viewtopic.php?f=224&t=141836

Por razones de seguridad: no permita ejecutar Dolphin como root en Linux: https://cgit.kde.org/dolphin.git/commit/?id=0bdd8e0b0516555c6233fdc7901e9b417cf89

No permitir ejecutar Dolphin como root en Linux Básicamente una copia de commit kate / 9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e que fue escrita por Martin Grässlin

No permita ejecutar kate y kwrite como root en Linux: https://phabricator.kde.org/R40:9adcebd3c2e476c8a32e9b455cc99f46b0e12a7e

Mas consejos

KDE Reddit: raíz de delfines en la aplicación KDE 17.04: https://www.reddit.com/r/kde/comments/6785b1/dolphin_root_on_kde_app_1704/

Omitir "No es posible ejecutar Dolphin como root" y recuperar los privilegios de root de KDE Dolphin: https://www.reddit.com/r/kde/comments/6xs3mp/bypass_executing_dolphin_as_root_is_not_possible/

Futuro

Soporte de Polkit en KIO: https://phabricator.kde.org/T6561

Cuando esté listo, Dolphin mostrará la consulta de contraseña si es necesario. Ahora, con el parche Dolphin & KIO:

ingrese la descripción de la imagen aquí


1
¿Podría elaborar un poco más sobre "Por razones de seguridad"?
Jim McAdams

¿ Leíste phabricator.kde.org/… . Igual / más: Martin Grässlin - Edición de archivos como root: blog.martin-graesslin.com/blog/2017/02/editing-files-as-root
user26687

entonces, la respuesta simple es "no puede ejecutar Dolphin como root, a menos que instale una versión parcheada"?

@ user47206: ¿Por qué no parcharlo usted mismo? ;) ¡Mira mi respuesta a continuación!
WitchCraft

10

No es una respuesta, solo una solución para el propósito mencionado por el OP ( copying or deleting files).

La idea es

  1. instale otro administrador de archivos que no tenga esa limitación y que no traiga muchas dependencias

  2. cree un menú contextual "Abrir como root" en Dolphin para este otro administrador de archivos.

Se pueden usar los principales administradores de archivos de otros escritorios (Nautilus, Nemo, Caja, Thunar), pero traen algunas dependencias. Incluso PCManFM y PCManFM-Qt hacen eso. Si necesita uno de esos para algún otro propósito, agregar ese podría ser una buena solución.

He descubierto que Krusader (que creo que en el pasado solía instalarse de manera predeterminada en algunos sistemas KDE) puede instalarse fácilmente, no tiene dependencias en Kubuntu 18.04 y puede usarse como root.

sudo apt install krusader

Bajo sus Herramientas tiene la opción "Root".

ingrese la descripción de la imagen aquí

que pide contraseña en una interfaz gráfica de usuario.

Para agregar un menú contextual en Dolphin, cree la carpeta ~/.local/share/kservices5/ServiceMenusy luego haga

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

y añadir

[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

Por alguna razón kdesu krusaderno funciona, y he usado la solución desde aquí . Lo que también funciona es konsole -e sudo krusader, pero eso muestra el terminal en lugar de una interfaz gráfica de usuario para la solicitud de contraseña.

Entonces, verás en Dolphin:

ingrese la descripción de la imagen aquí

trayendo un diálogo

ingrese la descripción de la imagen aquí

que es uno que funciona ..


4

He hecho mi propia versión basada en las respuestas anteriores. Entonces, para agregar un menú contextual para abrir Dolphin como root, siga estos pasos:

  • Cree un archivo llamado por ejemplo DolphinAsRoot.desktopen el directorio~/.local/share/kservices5/ServiceMenus/
  • Con un editor de texto, coloque el siguiente contenido:
[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
  • Si aún no aparece en el menú contextual en Dolphin, vaya a "Configuración -> Configurar Dolphin ...-> Servicios" y active la opción que agregó recientemente. Debe estar allí. De lo contrario, cierre Dolphin o incluso cierre la sesión y vuelva a iniciar sesión.

Eso es todo, espero que les ayude a todos como me ayudó a mí;)


0

Todo lo que hice fue agregar el Terminal a la barra de herramientas (aunque el método abreviado de teclado está vinculado a F4) y usé la línea de comandos para realizar operaciones tan sudo como fuera necesario.

Al igual que

Sí, puede que no sea tan conveniente, pero te obliga a comenzar a aprender la línea de comando mientras te da una representación visual de cómo funciona realmente el comando.

Esto está en Arch, pero la funcionalidad debería ser la misma en Ubuntu. Espero que haya ayudado.


0

Aquí hay una solución para Dolphin 17.x:

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

llegar libkdeinit5_dolphin.sodesde aquí

Probado por mí, funciona bien en Ubuntu bionic.

fuente


0

Es trivial!

Solo mira el código fuente de kate y kwrite:

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

En las primeras líneas de código directamente al comienzo de la función "principal", encontrará:

/**
 * 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 no es diferente, excepto que esto sucede en libkdeinit5_dolphin.so.

Entonces, ejecutar como root es trivial, todo lo que debemos hacer es omitir la comprobación if uid = 0

La forma en que hacemos esto es mediante parches permanentes de kate, kwrite y dolphin.
Entonces, lo primero que hacemos es volcar el contenido binario en un archivo de texto:

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

Ahora puede mirar el archivo con gedit ~/kate.txt, y si busca getuid, encontrará algo como:

   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>

Ahora, en el lado izquierdo, encontrará la dirección de memoria, después de los dos puntos (:) verá el código de instrucciones binarias (hexadecimal) y a la derecha de eso, verá el desensamblaje de ese código (también conocido como lo que significa) .

Ahora, ya ves, allí llama a getuid, prueba si eso es cero y salta a la instrucción if, es decir si el valor de retorno es igual a cero (je: jump if equal).

Ahora no queremos saltar al if, así que simplemente eliminamos esa basura allí. Pero solo eliminar esa basura cambiaría las direcciones en 6 bytes, destruyendo cualquier salto relativo en el programa en el proceso y, como consecuencia, el programa. Así que en lugar que acaba de sustituir toda la longitud de la instrucción de salto con NOP (abreviatura de N o Op ración) instrucciones, también conocido como 0x90 en el código de instrucción / hex.

Por lo tanto, debe reemplazar cada byte de salto allí con 0x90, así que donde tenía anteriormente

0f 84 e9 1e 00 00

usted tendrá

90 90 90 90 90 90

Esto se puede hacer simplemente con un editor hexadecimal.
Entonces instalamos uno:

sudo apt-get install wxhexeditor

Ahora en el editor hexadecimal, busca 0f 84 e9 1e 00 00, y reemplaza eso con 90 90 90 90 90 90. Si solo hay una ocurrencia de 0f 84 e9 1e 00 00, y la hay, entonces esto es trivialmente simple. Simplemente cambie los bytes en hexadecimal a 90 90 90 90 90 90 y guarde. Terminado. Kate o kwrite ahora se abrirán, ya sea que seas root o no.

Si haces lo mismo con Dolphin, te darás cuenta de que objdump -Crd /usr/bin/dolhinproduce un desmontaje muy corto.

si corre ldd /usr/bin/dolphin, verá que dolphin carga la biblioteca compartida libkdeinit5_dolphin.so

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

Entonces haces el objdump en libkdeinit5_dolphin.so:

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

Ahora abra el objdump: gedit ~/libkdeinit5_dolphin.txt

Busque getuid y verá que uno de los resultados de búsqueda es:

   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

Esto es genial, ya ves, más basura como en Kate y Kwrite.
Ahora ábralo /usr/lib/x86_64-linux-gnu/libkdeinit5_dolphin.soen su editor hexadecimal, búsquelo 0f 84 58 1a 00 00y reemplácelo con 90 90 90 90 90 90.
Presiona guardar, y listo.

Dolphin ahora se ejecuta como root.

Nota: es una buena idea hacer una copia de seguridad de los archivos que modifique, en caso de que se arruine.

Además, puede descargar la fuente de kate, kwrite y dolphin, eliminar esa basura del código fuente, compilar e instalar. Pero dado que al estúpido sistema cmake le falta alguna plantilla de basura para algunos estúpidos, como iconos, probablemente porque el cmake suministrado por el repositorio es demasiado viejo, esto no funciona. Lástima, hubiera sido demasiado simple si simplemente funcionara, ¿no?

Pero solo parchear los ejecutables como describí es más rápido, así que a quién le importa de todos modos.

Usted ve, no es sencillo, pero es trivial.

PD:
Ahora, cada vez que kate, kwrite o dolphin se actualicen a través de apt, sus cambios se sobrescribirán. Tendrá que volver a aplicarlos. Dejaré automatizar el proceso de parche en tus manos más que capaces, y tu lenguaje de programación joice;)

¿Se puede hacer esto en puro golpe?

Además, si desea parchear vlc para la misma basura, puede hacerlo con sed:

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

Simplemente ponga esa declaración sed en un script, para que pueda volver a aplicar, si alguna vez lo necesita, si está desconectado y no tiene acceso a Internet.

Hackeo feliz - con kate, kwrite y dolphin - como root - mientras mira / escucha algo en vlc.

PS2:
Las comprobaciones de raíz malísimas siguieron el camino del Dodo en KDE v19.04.
¿Quién ha dicho n evolución fue una mala cosa.
Para progresar - ¡Salud!


0

No es una solución, sino una sugerencia ... Alterar Dolphin y los archivos es bastante arriesgado. Double Commander es una excelente alternativa y se encuentra en el repositorio. Se instalará sin necesidad de root. Para obtener root, simplemente ingrese 'sudo doublecmd' en la terminal. Tiene muchas ventajas cuando se trabaja con grandes y millones de archivos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.