
he leídola documentación comunitaria "RootSudo"y estoy interesado en esta línea:
Deberíanuncause sudo normal para iniciar aplicaciones gráficas como Root.
¿Por qué? ¿Cuál es la diferencia? Proporcione una explicación sencilla, ya que solo soy un usuario normal de escritorio.
Respuesta1
En Ubuntu 19.10 y posteriores, la advertencia enese artículo(y en esta respuesta) ya no se aplica. VerLa respuesta de WinEunuuchs2Unixasí comoesta pregunta.
Las aplicaciones gráficas a menudo almacenan configuraciones y otros datos específicos del usuario en archivos de configuración escritos dentro del archivo del usuario.carpeta de inicio. El mecanismo principal que utilizan las aplicaciones para determinar qué deben usar como carpeta de inicio del usuario es elHOME
Variable ambiental. (Puedes inspeccionarlo tú mismo con echo $HOME
).
Supongamos que estás corriendogedit
(un editor de texto gráfico) comoroot
. Si corres sudo gedit
, HOME
seguirá apuntando haciasudirectorio de inicio, aunque el programa se esté ejecutandocomoroot
. En consecuencia, gedit
escribirá archivos de configuración.comoroot
en su directorio personal. Estea veces resultaráen los archivos de configuración que estánpropiedadporroot
y por lo tantoinaccesible para ti(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, de forma predeterminada, son propiedad del usuario que los crea (que en este caso es root
, no usted).
Esa es la razón principal por la que deberías ejecutar aplicaciones gráficas con una sudo
interfaz gráfica en lugar de directamente sudo
. En Ubuntu y la mayoría de sus derivados (incluidos Xubuntu y Lubuntu), la interfaz gráfica estándar esgksu
/gksudo
. En Kubuntu eskdesudo
. (Depende deentorno de escritoriosiendo utilizado.)
Si usteddesearPara usar sudo
directamente para ejecutar una aplicación gráfica como gedit
, puede ejecutar:
sudo -H gedit
La -H
bandera se configura sudo
para HOME
apuntar a root
la carpeta de inicio de (que es/root
).
Eso todavía no manejará automáticamente la propiedad de.Xauthority
copiándolo en una carpeta temporal (esta es la otra cosa que sudo
las interfaces gráficas se encargan por usted). Pero en el caso poco frecuente de que .Xauthority
sea inaccesible, recibirá un error que lo indica y luego podrá solucionar el problema eliminándolo ( sudo rm ~/.Xauthority
), ya que se regenera automáticamente. Por lo tanto, proteger .Xauthority
la propiedad y los permisos de es menos importante que proteger la propiedad y los permisos de los archivos de configuración.
A diferencia de a root
-owned .Xauthority
, cuando los archivos de configuración pasan a ser propiedad de 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 en la consola). Y a veces es más complicado solucionarlo, especialmentesi se encuentra en una situación en la que desea que uno o más archivos en su directorio personal sean propiedad de alguien que no sea usted(porque entonces no puedes solucionarlo simplemente devolviendo chown
todos tus archivos de forma recursiva a ti mismo).
Por lo tanto, sudo
(al menos sin -H
) no debe usarse para ejecutar una aplicación gráfica.a menos queEstá muy familiarizado con el funcionamiento interno de la aplicación y sabe con certeza que nunca intenta escribir ningún archivo de configuración.
Respuesta2
Simplemente pon:
Esto evita que los archivos de su directorio personal pasen a ser propiedad del root.
Léeloaquí. Además, posiblemente un duplicado de¿Cuál es la diferencia entre "gksudo nautilus" y "sudo nautilus"?
Respuesta3
Actualización de Ubuntu 19.10
A partir deubuntu 19.10, escribir sudo some_command
ahora tiene el mismo efecto que escribir sudo -H some_command
. Esto significa que el directorio para cualquier archivo de configuración tocado estará en /root
el directorio y no en /home/regular_userID
el directorio (también conocido como $HOME
).
Esto hace que todas estas preguntas y respuestas sean un punto discutible en gran medida para los usuarios de Ubuntu 19.10 y superiores.
Para ver si sudo
funciona como sudo -H
en su distribución, pruebe estas breves pruebas:
$ sudo printenv | grep HOME
HOME=/home/rick
$ sudo -H printenv | grep HOME
HOME=/root
Como puede ver, sudo
lo anterior no funciona así sudo -H
, por lo que el uso simple sudo
puede dañar los archivos de configuración de usuario.
Una alternativa a gksu nautilus
, gksu gedit
o sudo -H gedit
es utilizar el nautilus-admin
complemento. Le permite explorar archivos y directorios conNautiloy luego ábralos como root (Administrador).
La instalación es sencilla:
sudo apt install nautilus-admin
Ahora, cuando estés en Nautilus, tendrás una opción adicional para Editar como administrador:
gedit
como root no permite preferencias
Cuando ejecuta gedit
como root, no puede usar las preferencias que ha configurado como usuario normal para tabulaciones, convertir tabulaciones a espacios, nombre de fuente, tamaño de fuente, ajuste de línea, etc.
Para resolver esto, escribí el script sgedit
para heredar las preferencias del usuario y aplicarlas al root:¿Cómo puedo sincronizar mi gedit raíz con las preferencias de mi usuario gedit?
- Llamar usando
sgedit filename1 filename2 ...
- Obtiene la configuración de gedit del usuario para tabulaciones, fuentes, ajuste de línea, etc.
- Se eleva a
sudo -H
para preservar la propiedad del archivo mientras obtiene poderes de root. - Solicita la contraseña si la última
sudo
ha expirado. - Obtiene la configuración gedit de sudo
- Compara las diferencias entre la configuración de usuario y sudo gedit
- Ejecuta gsettings configurado solo en las diferencias (reduce 174 comandos de configuración a una docena o menos. La próxima vez se ejecuta quizás solo uno o dos cambios, pero muchas veces ningún cambio.
- Llama
gedit
como tarea en segundo plano, de modo que el mensaje del terminal reaparece inmediatamente.