Soy relativamente nuevo en Ubuntu, noté que en las respuestas de este sitio, cuando la gente sugiere editar archivos del sistema, el comando que dan es siempre sudo nano
o sudo vi
. Debido a que no me gusta usar editores de texto basados en terminales, generalmente uso
sudo -H gedit
en cambio, y hasta ahora funcionó perfectamente bien.
¿Puede haber algún problema con el uso gedit
para editar archivos del sistema o la elección del editor de texto depende exclusivamente de la preferencia de la persona? ¿Hay algo que deba tener en cuenta (como la codificación) al editar estos archivos?
command-line
sudo
gedit
shinobody
fuente
fuente
-H
parte es importante , no la usesudo
para iniciar aplicaciones GUI sin ella.Respuestas:
Siempre que lo ejecute correctamente, es una cuestión de su preferencia.
Además de las diferencias en las características , el editor de texto que usa es, de hecho, más o menos su preferencia. Esto es cierto incluso cuando su editor de texto es un programa gráfico como Gedit . Esto no quiere decir que no haya una buena razón
nano
yvim
, a menudo, se recomiendan. Los editores de texto basados en terminales tienen gustovim
(o al menos unvi
comando) ynano
están disponibles incluso cuando no hay GUI e incluso en la mayoría de los sistemas mínimos y rotos ; tienen algo de tradición detrás de ellos (si eres partidario de ese tipo de cosas); pueden ejecutarse en la misma terminal en la que se realizan otras tareas; se integran automáticamente en los flujos de trabajo de los usuarios del multiplexor terminal ; y es más probable que estén disponibles que cualquier otroeditor de texto gráfico particular , incluso Gedit, incluso en Ubuntu (que tiene varios sabores ).Eso no es todo. Si va a editar archivos del sistema, un enfoque es ejecutar su editor como root. Este no es el único enfoque, y hay algunos argumentos en contra (ver más abajo), pero es uno común. Si adopta ese enfoque y utiliza un programa gráfico como su editor, debe tener cuidado de ejecutarlo de tal manera que
$HOME
sea el directorio de inicio de la raíz en lugar del suyo , y esto agrega otra capa de problemas y complejidad. Pero ya lo estás haciendo; estás corriendosudo -H gedit
, que es una de las formas razonables . Aún así, esa complejidad es otra razón por la cual las personas tienden a sugerir editores no gráficos.Los programas gráficos son a menudo más complicados que los programas no gráficos. Tener más cosas ejecutadas como root es generalmente malo, ya que hay más formas en que las cosas podrían salir mal, incluso debido a posibles errores, incluso por accidente. (Sin
vim
embargo, los editores de texto no gráficos, como también son bastante sofisticados, y a menudo están configurados para ejecutar numerosos programas externos para realizar diversas tareas).Además de ejecutar el editor como root, otro enfoque general es editar un archivo que el editor puede modificar incluso cuando se ejecuta como su usuario (no root), de modo que los cambios en el archivo se propaguen al archivo propiedad de root que desee cambiar. Eso suena abstracto porque los detalles varían considerablemente. A continuación se presentan dos enfoques concretos importantes.
sudoedit
Una forma bastante antigua de hacer esto es
sudoedit
(documentada en la misma página del manual quesudo
). De manera predeterminada,sudoedit
utiliza el editor de texto predeterminado , que generalmente no es, y no debería ser, un programa gráfico. Pero se puede decir que para utilizar cualquier editor a través de losSUDO_EDITOR
,VISUAL
oEDITOR
variables de entorno , que se consulta en ese orden. Así puedes ejecutar:Reemplace
filename
con una ruta relativa o absoluta a su archivo.Esto hace una copia temporal del archivo que desea editar. La copia es propiedad de usted, no de la raíz (o de quien sea el propietario original). Abre el editor de texto y puede editar la copia temporal. Cuando cierra el editor de texto,
sudoedit
comprueba si realmente realizó cambios. Si lo hizo, copia la copia temporal modificada de nuevo al original.Si bien
sudoedit
funciona con editores gráficos, también es útil para editores basados en terminales. En ambos casos, se ejecuta el editor de texto como usted, por lo que tiene su configuración, y otras acciones que realice en ella otra de las modificaciones realizadas a ese archivo se llevan a cabo por usted, que ofrece un poco de protección contra algunos tipos de errores.Puede establecer una de esas variables de entorno de forma persistente si lo desea.
SUDO_EDITOR
es quizás el mejor ya que se usa para menos otras cosas. Sin embargo, si lo configuragedit
, tenga en cuenta que los comandos como no funcionarán cuando no haya una GUI disponible, como suele ser el caso (aunque no siempre ) en una consola virtual o mediante SSH .sudoedit filename
El servidor de administración de GVFS
Otra forma más nueva de hacer esto es abrir el archivo a través de su
admin://
ruta GVFS en lugar de su ruta tradicional de estilo Unix. Gracias a pomsky por enseñarme sobre esto. Del mismo modo que hay rutas GVFS para editar archivos que, en otros aspectos, no están en un lugar conveniente para editar, por ejemplo, porque están en una máquina remota a la que está conectado a través de SSH, GVFS admiteadmin://
rutas para editar archivos usted no poseeEsto es conceptualmente similar a
sudoedit
que ejecuta su editor como usted mismo y el archivo que ve el editor es algo que se le permite editar. Intentar abrir el archivo requiere que se autentique; Esta no es una forma mágica de eludir las restricciones de seguridad habituales.No,
/path/to/filename
debe haber una ruta absoluta al archivo, a partir de/
. Entonces hay tres/
personajes despuésadmin:
.Codificaciones y otras cosas teóricamente afectadas por la configuración del editor
La codificación de un archivo no se ve realmente afectada por si el editor que usa es o no gráfico. Algunos editores, como
vim
, incluso pueden operar gráficamente (elgvim
comando) o no gráficamente (elvim
comando). La respuesta simple a su pregunta sobre las codificaciones es que no tiene que preocuparse por eso. Eso está lo suficientemente cerca de la verdad como para no tener que leer el resto de esta respuesta.En las versiones actuales (y pasadas) de Ubuntu, los comandos les gusta
sudo nano
ysudo vim
ejecutan esos editores como root, pero$HOME
aún se han configurado en su directorio de inicio. Esto significa que los editores, por defecto, usarán su configuración en lugar de la configuración de la raíz. Si hay algo en su configuración de esos editores (o en un programa que ejecutan para hacer parte de su trabajo, comogit
) sobre codificaciones o terminaciones de línea , se seguirá. Con eso no sucederá.sudo -H editor
Algunas personas usan desnudos
sudo
(es decir, sin-i
o-H
) para los editores porque quieren eso. Pero realmente, deberías pensar dos veces sobre esto. No solo puede lograr ese objetivo de manera más limpia con un método comosudoedit
, también hay otras desventajas de comandos comosudo nano
ysudo vim
:Si la configuración de su editor hace que se ejecute algo, se ejecuta como root. Para editores sofisticados como
vim
, esto puede hacer que se ejecute una gran cantidad de código no trivial como root. Como se mencionó anteriormente, tener menos código ejecutado como root es generalmente bueno y este es uno de los argumentos en contra de ejecutar editores gráficos como root.Si su
vim
configuración tiene numerosos complementos, por ejemplo, para realizar un análisis estático en el código fuente a medida que lo escribe, y la raíz no lo hace, menos cosas se ejecutan como raíz que . (¡Incluso se ejecuta menos como root , pero sus complementos aún funcionan!) Esto es independiente de si su editor es o no gráfico.sudo -H vim filename
sudo vim filename
VISUAL=vim sudoedit filename
Si la configuración de su editor está rota y le impide editar archivos fácilmente, entonces arreglar eso puede ser aún más complicado, ya que también se aplica a la raíz. Esto es simplemente una molestia, no un problema difícil de resolver.
Los comandos como
sudo vim
tienen un poco del mismo problema que el comando (¡mal aconsejado!)sudo gedit
. Si ejecuta un editorvim
como root pero sin reiniciar$HOME
(comosudo -H
ysudo -i
lo haría), y crea archivos de configuración para sí mismo , esos archivos de configuración residirán en su directorio de inicio pero serán propiedad de root, y su configuración puede estar algo rota cuando luego ejecutas el editor como tú mismo.Bueno, ¡esto suena muy parecido a ese problema! La razón por la que es menos importante que con las aplicaciones gráficas es que el editor generalmente todavía se inicia, los mensajes de error suelen ser más fáciles de entender, por lo general puede averiguar qué archivos específicos se ven afectados mucho más fácilmente, y la rotura generalmente se limita a ese programa (Los programas gráficos usan archivos de configuración en más lugares). Además, a diferencia de los editores gráficos, los usuarios que solo usan casualmente un editor de texto y no cambian deliberadamente su configuración tienen pocas probabilidades de experimentar este problema.
Nuevamente, puede usar la configuración del editor de su propia cuenta de usuario mientras evita los problemas de permisos usando
sudoedit
o, desde el escritorio, iniciando el editor normalmente pero accediendo al archivo a través de unaadmin://
ruta.Finalmente, tenga en cuenta que el comportamiento antes mencionado de
sudo
cuándo-H
o cuándo-i
se pasa está planeado para cambiar en una versión futura de Ubuntu (como ya lo ha hecho, hace años, en la mayoría de los sistemas operativos similares a Unix que usansudo
). El comportamiento ya ha cambiado en Ubuntu 19.10 , que es la versión de desarrollo a partir de este escrito.fuente
sudo -H
es 1 vez de 100 o 1000 que olvidará-H
y la propiedad de un archivo podría transferirse del usuario a la raíz en$HOME
algún lugar.Para responder a su pregunta: en general, usar un editor de GUI no será un problema, además de
gedit
ser muy lento para archivos grandes.Pero para los programas GUI que usaría
pkexec
o engksu
lugar desudo
. Es posible que deba configurarpkexec
antes de que funcione.o para versiones anteriores de Ubuntu (por ejemplo, 16.04) puede usar:
(Aunque podría probar mejores editores de GUI, por ejemplo
geany
;-))fuente
gksu
está prácticamente descartado.pkexec
......pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY