J'ai trouvé cette question qui explique comment modifier un fichier distant avec vim en utilisant:
vim scp://user@myserver[:port]//path/to/file.txt
Est-il possible de le faire en tant que root (via sudo
) sur l'hôte distant?
J'ai essayé de créer un fichier avec des autorisations root sur l'hôte distant et de le modifier avec ce qui précède. Vim peut voir le contenu, le modifier et le sauvegarder, mais rien ne change sur l'hôte distant (probablement parce que vim enregistre simplement son fichier temporaire et le donne ensuite à scp pour le remettre?)
Lorsque vous faites cela avec un fichier enregistré par mon utilisateur, il se comporte comme prévu.
Mon SSH utilise une clé pour s'authentifier et le serveur distant a NOPASSWD pour mon accès sudo
Cette question est similaire, mais la seule réponse avec des votes utilise une marionnette qui n'est certainement pas ce que je veux utiliser.
Edit: En réponse au commentaire de @ drewbenn ci-dessous, voici mon processus complet d'édition:
vim scp://nagios//tmp/notouch
Où /tmp/notouch
est le fichier appartenant à root, je vois vim rapidement montrer
:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'
Cela disparaît automatiquement pour donner un écran noir vide avec le texte
"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue
Appuyer sur Entrée me permet de modifier le fichier
L'enregistrement fait apparaître le même type de commande scp que le début, qui disparaît rapidement et automatiquement (il est difficile de le lire à temps mais les fichiers scp et / tmp / ... sont définitivement là)
.vimrc
fichier
ssh -t host sudo vim file
?
ssh
sur le serveur et éditez-y le fichier (avecvisudo
ou autre). Tout autre élément a des implications sur la sécurité.