
De acuerdo con lapágina de manual:
sudoedit /etc/file
crea una copia del archivo, la abre como el usuario actual y, cuando se guarda, sobrescribe el archivo existente con la copia.
mientras
sudo vi /etc/file
abre el archivo como root
La página de manual indica que sudoedit es diferente de sudo porque:
el editor se ejecuta con el entorno del usuario que invoca sin modificar
¿Es el primer método más seguro? En caso afirmativo, ¿por qué? ¿Existen otras razones para utilizar sudoedit en lugar de sudo vi?
Respuesta1
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 en absoluto 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 quería permitir que un usuario editara un archivo de configuración y nada más, lástima, simplemente le dioraízen todo el sistema. Nada me impide generar un shell desde vim con :sh
o :!command
y, dado que son subprocesos, también se ejecutarán como root.
Por otro lado:
$ sudoedit /etc/farts.conf
en realidad funcionará 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 root, en esa copia.
Una vez que salga de su editor, comparará el archivo temporal y el archivo original, y reemplazará de forma 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 buscar en todas partes del sistema de archivos.
Esa es principalmente la distinción real, el resto que se ha mencionado son simplemente efectos secundarios interesantes.
Respuesta2
En primer lugar, sudo vim
ya menciona explícitamente su editor predeterminado, que no es necesario si lo tienes 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 utilicen el editor que prefieran personalmente.
¿Cómo es eso? Considere un sistema donde los usuarios normales sólo obtienen sudo
privilegios para editar ciertos archivos. Sin embargo , no pueden correr sudo
con nada más. Tendrías que permitirles hacerlo sudo vi
y sudo vim
y sudo nano
y ( sudo emacs
etcétera sudo pico
). En lugar de tener que hacer eso, simplemente podría permitirles acceder al sudoedit
archivo, con la opción de configurarlo $EDITOR
como quieran. (Imagínese que obligaría a un amante de Emacs a usar Vim...)
Otro problema es que si está $EDITOR
configurado en vim
y tiene configuraciones de personalización en su usuario .vimrc
, esas configuraciones no se usarán si usa sudo vim
o sudo $EDITOR
. sudoedit
sin embargo, preserva el entorno del usuario que llama y, por lo tanto, su configuración.
Ver también:¿Qué tiene de bueno sudoedit?