Parfois, je commence à éditer des fichiers de configuration dans /etc
en utilisant Vim, mais oubliez d'utiliser sudo
pour démarrer Vim. Le résultat inévitable est qu'après avoir terminé mes modifications, je rencontre l'avis redouté que je n'ai pas la permission d'enregistrer le fichier.
La plupart du temps, les modifications sont suffisamment petites pour que je quitte simplement Vim et recommence le tout en tant que root. Je pourrais bien sûr enregistrer dans un emplacement où je peux écrire puis copier en tant que root, mais c'est aussi un peu ennuyeux.
Mais je suis sûr qu'il existe un moyen plus simple de devenir root ou d'utiliser sudo
depuis Vim, sans avoir à annuler les modifications. Si la méthode ne s'appuierait pas sur sudo
être mis en place pour l'utilisateur, ce serait encore mieux.
Réponse acceptée :
sudo ne peut pas changer l'utilisateur effectif d'un processus existant, il crée toujours un nouveau processus qui a les privilèges élevés et le shell d'origine n'est pas affecté. C'est un élément fondamental de la conception UNIX. Le plus souvent, j'enregistre simplement le fichier dans / tmp comme solution de contournement. Si vous voulez vraiment l'enregistrer directement, vous pouvez essayer d'utiliser une fonctionnalité de Vim qui peut diriger un fichier vers un autre processus. Essayez d'enregistrer avec cette commande :
:w !sudo dd of=%
Testé et fonctionne. Vim vous demandera alors de recharger le fichier, mais ce n'est pas nécessaire :vous pouvez simplement appuyer sur o pour éviter de recharger et de perdre votre historique d'annulation. Vous pouvez même enregistrer cela dans une commande/fonction Vim ou même le lier à une clé pour un accès facile, mais je vais laisser cela comme exercice au lecteur.