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.
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 HOME
variable 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.
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"?
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:
gedit
como root no permite preferenciasCuando 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?
sgedit filename1 filename2 ...
Sudo -H
para preservar la propiedad del archivo mientras se obtienen poderes de root.Sudo
ha excedido el tiempo de espera.gedit
como una tarea en segundo plano, de modo que el mensaje del terminal vuelve a aparecer de inmediato.