it-swarm-es.com

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

He leído la documentación de la comunidad "RootSudo" y estoy interesado en esta línea:

Debería nunca usar Sudo normal para iniciar aplicaciones gráficas como Root.

¿Por qué? ¿Cuál es la diferencia? Proporcione una explicación simple, ya que solo soy un usuario de escritorio normal.

109
Nur

Las aplicaciones gráficas a menudo almacenan configuraciones y otros datos específicos del usuario en archivos de configuración escritos dentro del usuario carpeta de inicio . El mecanismo principal que usan las aplicaciones para determinar qué deben usar como carpeta de inicio del usuario es HOMEvariable de entorno . (Puede inspeccionarlo usted mismo con _echo $HOME_).

Suponga 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 esté ejecutando como root. En consecuencia, gedit escribirá los archivos de configuración como root en su directorio de inicio. Esto a veces resultará en los archivos de configuración siendo propiedad por root y por lo tanto inaccesible para usted (cuando luego ejecute el programa como usted mismo y no como root). Esto sucede principalmente cuando la aplicación tiene que crear un nuevo archivo de configuración. Los archivos recién creados, por defecto, son propiedad del usuario que los crea (que en este caso es root, no usted).

Esa es la razón principal por la que debe ejecutar aplicaciones gráficas con una interfaz gráfica Sudo en lugar de con una Sudo recta. En Ubuntu y la mayoría de sus derivados (incluidos Xubuntu y Lubuntu), la interfaz gráfica estándar es gksu/gksudo . En Kubuntu es kdesudo . (Depende del entorno de escritorio que se esté usando).

Si desea usar Sudo directamente para ejecutar una aplicación gráfica como gedit, puede ejecutar:

_Sudo -H gedit
_

El indicador _-H_ hace que Sudo establezca HOME para que apunte a la carpeta de inicio de root (que es /root ).

Eso todavía no manejará automáticamente la propiedad de .Xauthority copiándolo en una carpeta temporal (esto es otra cosa que las interfaces gráficas Sudo se ocupan de usted). Pero en el caso poco frecuente de que _.Xauthority_ sea inaccesible, recibirá un error que dice que sí, y luego puede solucionar el problema eliminándolo (_Sudo rm ~/.Xauthority_), ya que se regenera automáticamente. Por lo tanto, proteger la propiedad y los permisos de _.Xauthority_ es menos importante que proteger la propiedad y los permisos de los archivos de configuración.

A diferencia de un root_ propiedad _.Xauthority_, cuando los archivos de configuración se convierten en root, no siempre es tan obvio cuál es el problema (porque los programas gráficos a menudo se ejecutan, pero no funcionan muy bien, y generan errores útiles para la consola). Y a veces es una molestia más grande de solucionar, especialmente si se encuentra en una situación en la que desea que uno o más archivos en su directorio principal sean propiedad de otra persona que no sea usted (porque entonces no puede solucionarlo simplemente recursivamente chown devolviendo todos sus archivos a usted mismo).

Por lo tanto, Sudo (al menos sin _-H_) no debe usarse para ejecutar una aplicación gráfica a menos que esté muy familiarizado con el funcionamiento interno de la aplicación y asegúrese de que nunca intente escribir ningún archivo de configuración.

127
Eliah Kagan

Simplemente pon:

Esto evita que los archivos en su directorio de inicio sean propiedad de root.

Léelo aquí . Además, posiblemente un duplicado de ¿Cuál es la diferencia entre "gksudo nautilus" y "Sudo nautilus"?

25
carnendil

Una alternativa a gksu nautilus y gksu gedit es usar el complemento nautilus-admin. Le permite examinar archivos y directorios con Nautilus y luego abrirlos como root (Administrador).

La instalación es sencilla:

Sudo apt install nautilus-admin

Ahora, cuando esté en nautilus, tendrá una opción adicional para Editar como administrador:

nautilus admin.gif


gedit como root no permite preferencias

Cuando ejecuta gedit como root, no puede usar las preferencias que ha configurado como usuario habitual para tabulaciones, convertir pestañas en espacios, nombre de fuente, tamaño de fuente, ajuste de línea, etc.

Para resolver esto, he escrito el script sgedit para heredar las preferencias del usuario y aplicarlas a la raíz: ¿Cómo puedo sincronizar mi gedit raíz con las preferencias de mi usuario gedit?

  • Llamar usando sgedit filename1 filename2 ...
  • Obtiene la configuración gedit del usuario para tabulaciones, fuentes, ajuste de línea, etc.
  • Se eleva a Sudo -H para preservar la propiedad del archivo mientras se obtienen poderes de root.
  • Solicita contraseña si el último Sudo ha excedido el tiempo de espera.
  • Obtiene la configuración de gedit de Sudo
  • Compara las diferencias entre la configuración de usuario y Sudo gedit
  • Ejecuta gsettings establecidos solo en las diferencias (reduce 174 comandos de set a una docena o menos. La próxima vez se ejecuta tal vez solo uno o dos cambios, pero a menudo no hay cambios.
  • Llama a gedit como una tarea en segundo plano, de modo que el mensaje del terminal vuelve a aparecer de inmediato.
5
WinEunuuchs2Unix