Editer le fichier avec les droits de superutilisateur

53

Lorsque vous devez éditer des fichiers système, il est habituel que vous ayez déjà lancé Emacs avec un utilisateur normal auparavant. Le fichier est donc protégé en écriture. Que puis-je faire pour obtenir les privilèges root? Je veux dire quelque chose comme M-x sudode dired.

Je ne veux pas lancer Emacs en tant que super-utilisateur et je ne veux pas le quitter.

smonff
la source

Réponses:

59

Utilisez C-x C-fet tapez /su::/etc/hostnameou /sudo::/etc/hostnameselon le cas.

Ceci utilise le paquet TRAMP , qui est distribué avec Emacs. Ce paquet permet d'accéder aux fichiers distants, et plus généralement aux fichiers qu'Emacs ne peut pas ouvrir directement.

artagnon
la source
1
Merci. Quel est le sens de la ::?
smonff
7
Le: est un séparateur; nous le fournissons une deuxième fois pour indiquer qu'il n'y a plus d'arguments. Vous pouvez /su:otheruser@localhost:, par exemple.
artagnon
5
/sudo::est un raccourci pour trampsudo:root@<hostname>:
phils
9

Utilisez find-fileavec tramp. À l'invite /sudo::/etc/ssh/ssh_config, utilisez sudo et un sous-shell pour ouvrir ce fichier avec les privilèges root. Lorsque sudo est utilisé pour la première fois, un mot de passe est demandé, mais vous pouvez éditer tout fichier doté de ces autorisations jusqu'à la fermeture de cette session en ajoutant la /sudo::commande existante au préfixe .

Voir http://www.gnu.org/software/tramp/ pour plus de détails.

dédoublé
la source
3

Si vous utilisez le ivypackage et que vous avez configuré counsel-find-filepour le remplacer find-file, l'une des "actions ivy" préconfigurée pour vous consiste à modifier le fichier en tant que root. La hydrafrappe par défaut pour cette action est r.

utilisateur1404316
la source
2

Il existe aujourd'hui de nombreux packages qui résolvent ce problème (à partir de 2018). Certains d'entre eux sont:

  • sudo-edit, permet de changer les droits d'édition sur un fichier en lecture seule déjà ouvert. Juste M-x sudoet tapez un mot de passe et vous avez terminé. Après de nombreuses années d'utilisation de celui-ci, je pense que c'est le plus pratique pour ce besoin. sudo-editvous permet d'ouvrir un fichier comme n'importe quel utilisateur, mais il est configuré par défaut sur sudo si aucun n'est fourni.
  • dired-toggle-sudo. C'était la première solution intégrée que j'ai trouvée après avoir posé cette question. Il est orienté Dired, donc si vous préférez la version orientée fichier , reportez-vous à la première puce de cette liste.
  • D'autres solutions existent sur Melpa
smonff
la source
2

Si vous utilisez Helm. Vous n'avez besoin d'aucun paquet externe / configuration supplémentaire. cela fonctionne hors de la boîte.

A l'intérieur, helm-find-filesvous pouvez invoquer find file as rootce qui est lié à C-c r. Cela fonctionne pour les fichiers ou les répertoires en helm-find-filessession.

Si vous ne voulez pas taper le mot de passe chaque fois que vous ouvrez des fichiers / répertoires racine. Mettez la ligne suivante à votre~/.authinfo.gpg

machine localhost port sudo login root password xxxxxx
machine your_machine_name port sudo login root password xxxxx

la source

azzamsa
la source