Debido a que le está diciendo a vim que ejecute algunos comandos desde un archivo sobre el que no tiene control o alguien más podría haber escrito. Digamos que tomas algo de github, y en el fondo del árbol hay un .vimrc. Si vim algo en ese directorio y tiene set exrc
, le está diciendo a vim que ejecute los comandos en el .vimrc que obtuvo de github. ¿Confía completamente en quien creó ese archivo? Porque estás dejando que vim ejecute los comandos que pongan en ese archivo. O digamos que está en una máquina utilizada regularmente por varias personas (todavía existen :-)), y alguien le pide que vea algo en su directorio de inicio (o / tmp, o en cualquier lugar en el que puedan escribir). Cd allí, es un archivo de texto, entonces haces un vim file
. Conset exrc
, también le está diciendo a vim que ejecute los comandos en .vimrc en ese directorio. ¿Confía completamente en ese usuario, o en un directorio de escritura mundial como / tmp, cada usuario que puede iniciar sesión en esa máquina?
set secure
mitiga un poco el problema al limitar algunas cosas que se pueden hacer en un .vimrc, pero si el .vimrc por directorio puede ser de su propiedad (como en el ejemplo de github, o en una máquina multiusuario donde algunos usuarios puede ignorar los archivos), set secure
se ignora, por lo que aún tiene los mismos problemas.