Me topé con esta pregunta mientras buscaba algo que no tuviera ninguna relación, pero pensé en agregar la siguiente distinción importante, que no se ha mencionado hasta ahora:sudoedit no ejecuta su editor como root.
$ sudo vim /etc/farts.conf
Simplemente ejecutará vim como root, permitiéndole leer el archivo. La desventaja es que el editor ahora también se ejecuta como root y puede hacer cualquier cosa. Si solo deseaba permitir que un usuario editara un archivo de configuración y nada más, lástima, simplemente le dio root sobre todo el sistema. Nada me impide generar un shell de vim con :sh
o :!command
y como son subprocesos, también se ejecutarán como root.
Por otro lado:
$ sudoedit /etc/farts.conf
en realidad operará de manera diferente. Creará una copia con un nombre único en /tmp con permisos bloqueados solo para su usuario, y luego generará su editor normalmente, sin privilegios de raíz, en esa copia.
Una vez que salga de su editor, comparará el archivo temporal y el archivo original, y reemplazará de manera segura el original con su edición si cambió.
En este escenario, es posible permitir que un usuario edite un archivo del sistema, pero no permitirle ejecutar archivos binarios aleatorios como root o pokear en todas partes del sistema de archivos.
Esa es principalmente la distinción real, el resto que se ha mencionado son solo efectos secundarios.
En primer lugar, sudo vim
ya menciona explícitamente su editor predeterminado, que no es necesario si lo tiene definido en $EDITOR
. sudoedit
le evita tener que definir el editor cada vez que desea editar algo, y en un sistema multiusuario permite que todos usen el editor que les gusta personalmente.
¿Cómo es eso? Considere un sistema donde los usuarios normales solo obtienen sudo
privilegios para editar ciertos archivos. No pueden ejecutar sudo
aunque con cualquier otra cosa. Tendrías que permitirles sudo vi
y sudo vim
y sudo nano
y sudo emacs
y sudo pico
(etcétera). En lugar de tener que hacer eso, simplemente podría permitirles sudoedit
el archivo, con su elección de configuración $EDITOR
a lo que les gusta. (Imagina que obligarías a un amante de Emacs a usar Vim...)
Otro problema es que si su $EDITOR
está establecido en vim
, y tiene configuraciones de personalización para ello en el .vimrc
de su usuario , esa configuración no se utilizará si usa sudo vim
o sudo $EDITOR
. sudoedit
sin embargo, conserva el entorno del usuario que llama y, por lo tanto, su configuración.
Ver también:¿Qué tiene de bueno sudoedit?