¿Qué cosas malas específicas suceden cuando gedit se usa con sudo?

10

Leí esta respuesta explicando que la raíz "a veces" puede poseer algo en el /home/$USERdirectorio.

¿Alguien puede dar un ejemplo de cómo demostrarlo? Solo da un caso de prueba cuando sucede algo realmente malo, cuando corro

sudo gedit /etc/rc.local

editar archivo y guardar.

Recibí muchos votos negativos tratando de ayudar a OP y los comentarios se inundaron al decir que es un delito ejecutar gedit con sudo.

¿Alguien puede dar un ejemplo real?

Le expliqué claramente por qué esta pregunta no es un duplicado. No hay una respuesta específica para gedit a la pregunta vinculada.

Y es importante explicar por qué el uso generalizado sudo gedites malo, o no realmente, etc.

Piloto6
fuente
2
Siempre lo usé con sudo, nunca tuve un problema. Buena pregunta.
Dario Salvati
1
@Wilf, a nano le gusta escribir ~ / .nano_history que si lo ejecuta con sudo hace que el archivo sea propiedad de root, por lo que cuando ejecuta nano sin sudo se queja de que no puede acceder al archivo. Un simple lo sudo chownarregla.
psusi
1
En lo que respecta a rc.local, ese es un script de nivel de ejecución, debe ser propiedad de root, por lo tanto, sudo no tiene ningún efecto sobre él. Pruébalo con ~ / .bashrc. No creo que Shell acepte ese archivo si es propiedad de root y debería regresar a la configuración predeterminada. Pero eso es solo una sugerencia. Regresaré mañana, mira cómo funciona esta pregunta
Sergiy Kolodyazhnyy
1
Para la mayoría de los editores no es la apertura, es presionar GUARDAR. mOst editros también guarda la configuración en algún lugar, por lo que si modifica la configuración, la actualizará.
Wilf
2
Por lo que vale, solo lo edito en el lugar para usarlo -Hcuando lo veo.
muru

Respuestas:

11

En cuanto a sudo geditnada grave, solo una mala práctica, especialmente en los últimos tiempos. ¿Cuánto más difícil sería sugerir sudo -H gedit?

-H,--set-home Solicite que la política de seguridad establezca la variable de entorno HOME en el directorio principal especificado por la entrada de la base de datos de contraseñas del usuario objetivo. Dependiendo de la política, este puede ser el comportamiento predeterminado.

Lo que no sucederá?

Obtiene un par de archivos propiedad de root en su carpeta de inicio. Uno ( recently-used.xbel) probablemente regresará a la propiedad del usuario. Esto puede suceder cuando un archivo se elimina y se vuelve a crear. Para ver qué sudo geditha cambiado, ejecute find ~ -user root -group rooty vea qué se devuelve. Por defecto, esto debería ser nada.

Con ese comando, puede ver un par de archivos propiedad de root. Uno sería nuevo .filey .gvfs, tarde o temprano, propiedad de una raíz ~/.cache/dconfy lo mencionado anteriormente recently-used.xbel.

Así que no hay cosas 'el cielo está fallando', pero aún así. Ahora ha habido informes de que el uso continuo causa otros problemas, pero no va a reclamar lo que no veo aquí.

También tenga en cuenta que a partir de 13.10 a sudo geditutilizará la configuración gedit del usuario en lugar de la configuración gedit de la raíz. Una vez más, solo es una mala práctica, ¿por qué seguir haciéndolo o sugerir que otros lo hagan?

doug
fuente
1
A veces, ahora también aprovecho la oportunidad para mostrarles a los usuarios cómo usar nano, ya que es fácil y la mayoría de las veces puede suplantar a gedit. Sin embargo, hay algunos casos en los que gedit sigue siendo mejor que nano incluso para aquellos que saben cómo usarlo. También sudo gedit puede conducir a sudo nautilus que probablemente es peor .. (Aquí tengo una pkexec habilitado gedit, pero eso es más allá del alcance de esta discusión
Doug
@wjandrea, suena bien, editado
doug
12

Bueno, tal vez sea una fantasía, pero hay varias personas que dicen lo mismo:

  • ¿Por qué debería usar gksudo para aplicaciones Gtk en lugar de sudo?

    Sin embargo, hay otros momentos en que los efectos secundarios pueden ser tan leves como que las extensiones de Firefox no se peguen o tan extremas como que ya no pueda iniciar sesión porque los permisos en su autoridad .ICE cambiaron.

  • ¿Por qué los usuarios nunca deberían usar sudo normal para iniciar aplicaciones gráficas?

    Supongamos que está ejecutando gedit (un editor de texto gráfico) como root. Si ejecuta sudo gedit, HOME continuará apuntando hacia su directorio de inicio, aunque el programa se ejecute como root. En consecuencia, gedit escribirá los archivos de configuración como root en su directorio de inicio. Esto a veces dará como resultado que los archivos de configuración sean propiedad de root y, por lo tanto, inaccesibles para usted (cuando luego ejecute el programa como usted mismo y no como root).

  • ¿Cómo ejecutar un programa GUI como un usuario diferente (Debian)?

    En primer lugar, no use sudo o su para cambiar usuarios para ejecutar un proceso gráfico, o es probable que tenga problemas en el futuro (~ / .ICEautor de cambio de autoridad es un problema notable). En su lugar, cree un acceso directo que use el siguiente comando:

  • Ejecutando Sudo Gráficamente

    Bueno, para ser sincero, la mayoría de las veces no lo es. Para muchas aplicaciones, puede ejecutarlas de manera inadecuada: use sudo para aplicaciones gráficas y no vea efectos secundarios adversos.

    ...

    Estos errores se producen porque a veces, cuando se sudoinicia una aplicación, se inicia con privilegios de root pero utiliza el archivo de configuración del usuario.

    Este archivo de correo también puede ser de su interés.

Entonces, probémoslo.

2 cajas virtuales completamente nuevas. Ubuntu 14.04. Nunca ejecutes firefox en ellos. ¿Qué sucederá cuando ejecute el comando sudo firefox?

tim@Hairy14CVB:~$ sudo firefox    
(process:4857): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed

...

[email protected]:2192:13

Esto es lo mismo (o al menos muy similar) para ambas cajas virtuales. Mientras Firefox se estaba ejecutando, instalé una extensión de YouTube, una destacada. Luego cerré Firefox y verifiqué el resultado.

tim@Hairy14CVB:~$ ls -la .ICEauthority 
-rw------- 1 tim tim 1336 Jun  4 21:31 .ICEauthority

Bueno, .ICEauthorityesta bien! Sin embargo...

tim@Hairy14CVB:~$ ls -la | grep root
drwxr-xr-x  3 root root 4096 Jun  1 20:49 ..
drwx------  3 root root 4096 Jun  5 22:41 .dbus
drwx------  4 root root 4096 Jun  5 22:41 .mozilla

3 cosas en mi carpeta de inicio ( /home/tim/) son propiedad de root ( .., .dbusy .mozilla). Esto es lo mismo (o al menos muy similar) para ambas cajas virtuales.

Entonces, ¿esto importa? No estaba seguro, así que ejecuté Firefox, así:

tim@Hairy14CVB:~$ firefox

(process:4959): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
Error: Access was denied while trying to open files in your profile directory.

Y este error feo:

ingrese la descripción de la imagen aquí

Para la salida completa del terminal (incluido firefox babble), vea estos dos pastebins, aquí y aquí .

Todavía puedo ejecutar firefox como root por cierto. Pero ahora se han cambiado más archivos:

tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x  4 root root  4096 Jun  3 19:46 ..
drwx------  3 root root  4096 Jun  5 22:55 .adobe
drwx------  3 root root  4096 Jun  5 22:40 .dbus
drwx------  3 root root  4096 Jun  5 22:55 .macromedia
drwx------  4 root root  4096 Jun  5 22:40 .mozilla

¿Fue porque subí una imagen a imgur.com? No estoy seguro.

¿Cómo solucioné esto? chown. No lo entiendo, pero Internet me dijo que lo hiciera, y es un Virtual Box, así que.

sudo chown -R tim:tim /home/tim/

Y eso lo arregló. Ahora la salida es solo el ..archivo:

tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x  4 root root  4096 Jun  3 19:46 ..

Y eso es lo mismo en mi computadora real. Ah, y en mi Kubuntu virtualbox:

tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x  3 root root  4096 May 16 14:10 ..

En el que nunca he ejecutado un comando sudo. Entonces todo está bien. Simplemente no se ejecute sudoen una aplicación GUI.

Prueba final: ejecútelo con -Hy las -ibanderas:

sudo -H firefox

y

sudo -i firefox

Y buenas noticias! Aún así, la única "cosa" raíz es ... Y puedo correr firefoxsin root.


OP quiere que hable sobre Gedit.

corrí

sudo gedit

Luego instalé algunos complementos aleatorios. Este fue el resultado:

tim@Hairy14VB:~$ ls -la | grep root
ls: cannot access .gvfs: Permission denied
drwxr-xr-x  4 root root   4096 Jun  3 19:46 ..

Tenga en cuenta que ni siquiera puedo ver la propiedad de, .gvfsasí que hice esto:

tim@Hairy14VB:~$ sudo ls -la | grep root
drwxr-xr-x  4 root root   4096 Jun  3 19:46 ..
dr-x------  2 root root      0 Jun  6 10:05 .gvfs

Entonces, ejecutar sudo geditcambia un archivo en mi directorio de inicio a root.

Todavía puedo abrir gedit, pero esta vez saco algo de basura:

(gedit:7422): Gtk-WARNING **: Attempting to read the recently used resources file at `/home/tim/.local/share/recently-used.xbel', but the parser failed: Failed to open file '/home/tim/.local/share/recently-used.xbel': Permission denied.

Y eso sugiere que hay otro archivo ( ~.local/share/recently-used.xbel) que ha cambiado. Creo que esta es la lista de archivos usados ​​recientemente y (por suerte) ya no tengo mi lista de archivos usados ​​recientemente:

Debería haber un archivo allí llamado output2.txt.save2. Mis pronombres son El / El

Tim
fuente
1
Escribiste todo menos la respuesta a la pregunta. Solo da un caso de prueba con gedit. ¿Debo marcar como "no una respuesta"? O "muy mala calidad" aunque larga?)))
Piloto6
55
@ Pilot6 - en la pregunta Can anyone give an example how to prove it ..... Can anyone give a real example?- y esto enlaza con cosas del pasado y da un ejemplo de lo que puede suceder con Firefox como root - ¿Debo marcar su comentario como 'no constructivo' ya que no puedo encontrar 'extrañamente gruñón'? be nice cmon :)
Wilf
1
Oh, por favor, no lo uses ls -la|grep rootpero tampoco find . -uid 0ofind . -user root
solsTiCe
1
@ Pilot6 bien, he editado para incluir algunas cosas sobre gedit. No creo que agregue nada a mi respuesta, pero parece que lo quieres así que ...
Tim
44
¡Tanto las citas como los ejemplos detallados hacen que esto sea súper útil! Me alegro de que hayas agregado Gedit, pero estoy de acuerdo con @Wilf en que fue bueno incluso antes. No son solo ejemplos de Gedit que yo (deliberadamente) no incluí allí . Si la gente quiere, puedo agregar una breve nota sobre el "a veces", pero realmente creo que esta pregunta está separada y he votado para volver a abrirla . Si reabrimos esto, intentaré agregar otra respuesta con más detalles sobre Gedit, pero esta seguirá siendo la respuesta más útil para la mayoría de las personas.
Eliah Kagan