Encontré esta pregunta que explica cómo editar un archivo remoto con vim usando:
vim scp://user@myserver[:port]//path/to/file.txt
¿Es posible hacer esto como root (vía sudo
) en el host remoto?
Intenté crear un archivo con permisos de root en el host remoto y editarlo con lo anterior. Vim puede ver el contenido, puede editarlo y guardarlo, pero nada cambia en el host remoto (probablemente porque vim solo está guardando su archivo temporal y luego se lo está dando a scp para que lo vuelva a poner).
Al hacer esto con un archivo guardado por mi usuario, se comporta como se esperaba.
Mi SSH usa una clave para autenticar y el servidor remoto tiene NOPASSWD para mi acceso a sudo
Esta pregunta es similar, pero la única respuesta con votos usa títere, que definitivamente no es lo que quiero usar.
Editar: en respuesta al comentario de @ drewbenn a continuación, aquí está mi proceso completo para editar:
vim scp://nagios//tmp/notouch
¿Dónde /tmp/notouch
está el archivo propiedad de root? Veo que vim muestra rápidamente
:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'
Esto desaparece automáticamente para producir una pantalla negra vacía con el texto
"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue
Presionar enter me permite editar el archivo
Al guardar aparece el mismo tipo de comando scp que al principio, que desaparece rápida y automáticamente (es difícil leerlo a tiempo, pero los archivos scp y / tmp / ... definitivamente están ahí)
ssh
al servidor y edite el archivo allí (convisudo
, o lo que sea). Cualquier otra cosa tiene implicaciones de seguridad..vimrc
archivossh -t host sudo vim file
?Respuestas:
Voy a decir que esto no es posible porque
vim
no está ejecutando comandos remotos. Simplemente se usascp
para copiar el archivo, editarlo localmente yscp
volver a hacerlo cuando haya terminado. Como se indica en esta preguntasudo
a travésscp
no es posible y se recomienda que o bien modificar los permisos para llevar a cabo lo que está queriendo o simplemente a través de ssh a la máquina remota.fuente
Al igual que la respuesta aceptada, no creo que esto sea posible directamente.
Sin embargo, veo al menos dos formas de lograr su objetivo.
Ejecutando vim de forma remota
Esto tiene desventajas:
Pero tiene la ventaja de trabajar.
Haciendo el scp fuera de vim
Puede copiar el archivo localmente, editarlo y volver a copiarlo. Y podría automatizar eso para que sea casi tan transparente como el soporte scp de vim.
Algo como el siguiente script de shell podría funcionar (nota, ¡completamente no probado!):
Esto te permitiría hacer algo como
rvim user@myserver /some/file
. Incluso conserva la copia local si falla la segunda transferencia, para que no pierda sus cambios.El script podría usar muchas mejoras (como mínimo, la comprobación de errores), pero es un punto de partida.
fuente
Necesitaría la contraseña de root o tener su clave ssh pública en ~ root / .ssh / optional_keys. Una vez que tengas eso, probablemente puedas hacer
En pocas palabras: esto es efectivamente solo un atajo para
Si tiene el acceso necesario para hacerlo, entonces tiene el acceso necesario para usar el complemento de acceso a la red de vim. Si no, entonces no lo haces.
Como señala Zachary Brady,
sudo
no está involucrado. Necesitará acceso ssh a la cuenta raíz.¿Lo has probado?
fuente
ssh remotesystem sudo vim file