sudoedit: ¿por qué usarlo en lugar de sudo vi?

sudoedit: ¿por qué usarlo en lugar de sudo vi?

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 :sho :!commandy, 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 vimya menciona explícitamente su editor predeterminado, que no es necesario si lo tienes definido en $EDITOR. sudoeditle 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 sudoprivilegios para editar ciertos archivos. Sin embargo , no pueden correr sudocon nada más. Tendrías que permitirles hacerlo sudo viy sudo vimy sudo nanoy ( sudo emacsetcétera sudo pico). En lugar de tener que hacer eso, simplemente podría permitirles acceder al sudoeditarchivo, con la opción de configurarlo $EDITORcomo quieran. (Imagínese que obligaría a un amante de Emacs a usar Vim...)

Otro problema es que si está $EDITORconfigurado en vimy tiene configuraciones de personalización en su usuario .vimrc, esas configuraciones no se usarán si usa sudo vimo sudo $EDITOR. sudoeditsin embargo, preserva el entorno del usuario que llama y, por lo tanto, su configuración.

Ver también:¿Qué tiene de bueno sudoedit?

información relacionada