He leído la documentación de la comunidad "RootSudo" y estoy interesado en esta línea:
Usted debe nunca se use sudo normales 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.
Respuestas:
Las aplicaciones gráficas a menudo almacenan configuraciones y otros datos específicos del usuario en archivos de configuración escritos dentro de la carpeta de inicio del usuario . El principal mecanismo que usan las aplicaciones para determinar qué deben usar como carpeta de inicio del usuario es la
HOME
variable de entorno . (Puede inspeccionarlo usted mismoecho $HOME
).Supongamos que está ejecutando
gedit
(un editor de texto gráfico) comoroot
. Si ejecutasudo gedit
,HOME
continuará apuntando hacia su directorio de inicio, aunque el programa se esté ejecutando comoroot
. En consecuencia,gedit
escribirá los archivos de configuración comoroot
en su directorio de inicio. Esto a veces dará como resultado que los archivos de configuración sean de su propiedadroot
y, por lo tanto, inaccesibles para usted (cuando luego ejecute el programa como usted mismo y no comoroot
). 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 (quien en este caso esroot
usted, no usted).Esa es la razón principal por la que debe ejecutar aplicaciones gráficas con una interfaz
sudo
gráfica en lugar de una rectasudo
. En Ubuntu y la mayoría de sus derivados (incluidos Xubuntu y Lubuntu), la interfaz gráfica estándar esgksu
/gksudo
. En Kubuntu lo eskdesudo
. (Depende del entorno de escritorio que se use).Si desea usar
sudo
directamente para ejecutar una aplicación gráfica comogedit
, puede ejecutar:El
-H
indicadorsudo
estableceHOME
que apunte aroot
la carpeta de inicio de (que es/root
).Eso todavía no manejará automáticamente la propiedad
.Xauthority
copiándola en una carpeta temporal (esto es otra cosa que las interfaces gráficassudo
se encargan de usted). Pero en el caso poco frecuente que.Xauthority
es 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.Xauthority
la propiedad y los permisos es menos importante que proteger la propiedad y los permisos de los archivos de configuración.A diferencia de una
root
participada.Xauthority
, cuando los archivos de configuración se convierten en propiedad comoroot
, no siempre es tan evidente cuál es el problema (ya que los programas gráficos a menudo se ejecutarán, pero no funciona muy bien, y la salida de los errores útiles a la consola). Y a veces es una molestia más grande solucionarlo, 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 recursivamentechown
todos sus archivos de vuelta a ti 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 sepa con certeza que nunca intentará escribir ningún archivo de configuración.fuente
sudo chmod -R $USER:$USER ~
Desafortunadamente, esos criterios no siempre se aplican. Si tiene archivos donde necesita preservar al propietario del grupo, puede ejecutarlossudo chmod -R $USER ~
. Esto suele ser suficiente. (Si tiene archivos, debe ser propiedad de otro usuario en su directorio de inicio, incluso eso será un problema).chmod
Realmente lo hace? Siempre pensé que fue lochown
que lo hizo.chmod
nunca lo hizo por michown
lugar dechmod
en mis comentarios anteriores. Lo siento, ¡y gracias por señalar esto!sudo -H echo $HOME
, su shell - funcionando como usted, no como root - realiza la expansión de parámetro en$HOME
, obteniendo el camino de su directorio de inicio, a continuación, pasa a quesudo
, a su vez, pasa el valor expandido ya aecho
que lo imprime.sudo -H printenv HOME
,sudo -H bash -c 'echo $HOME'
Ysudo -H sh -c 'echo $HOME'
todos los de impresión/root
. Esto es conceptualmente similar, aunque por un mecanismo diferente, a cómox=a echo "$x"
no se imprimea
(a menos quex
ya tenga el valora
).Simplemente pon:
Léelo aquí . Además, posiblemente un duplicado de ¿Cuál es la diferencia entre "gksudo nautilus" y "sudo nautilus"?
fuente
Una alternativa
gksu nautilus
ygksu gedit
es usar unnautilus-admin
complemento. Le permite examinar archivos y directorios con Nautilus y luego abrirlos como root (Administrador).La instalación es sencilla:
Ahora, cuando esté en nautilus, tendrá una opción adicional para Editar como administrador:
gedit
como root no permite preferenciasCuando se 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 root gedit con las preferencias de mi usuario gedit?sgedit filename1 filename2 ...
sudo -H
para preservar la propiedad del archivo mientras se obtienen poderes de raíz.sudo
ha expirado.gedit
como una tarea en segundo plano, de modo que el indicador de terminal reaparece inmediatamentefuente