Editar archivo con derechos de superusuario

53

Cuando tiene que editar archivos del sistema, es una situación habitual que haya lanzado Emacs con un usuario normal antes, por lo que el archivo estará protegido contra escritura. ¿Qué puedo hacer para obtener privilegios de root? Me refiero a algo como M-x sudode dired.

No quiero iniciar Emacs como superusuario y no quiero abandonarlo.

smonff
fuente

Respuestas:

59

Use C-x C-fy escriba /su::/etc/hostnameo /sudo::/etc/hostnamesegún corresponda.

Esto usa el paquete TRAMP , que se distribuye con Emacs. Este paquete proporciona acceso a archivos remotos y, en general, a archivos que Emacs no puede abrir directamente.

artagnon
fuente
1
Gracias. ¿Cuál es el significado de la ::?
smonff
77
El: es un separador; la suministramos por segunda vez para indicar que no hay más argumentos. Puedes /su:otheruser@localhost:, por ejemplo.
artagnon
55
/sudo::es la abreviatura de vagabundosudo:root@<hostname>:
phils
9

Usar find-filecon vagabundo. En el indicador /sudo::/etc/ssh/ssh_config, usará sudo y una subshell para abrir ese archivo con privilegios de root. Cuando se usa sudo por primera vez, solicitará una contraseña, pero hasta que se cierre esa sesión, puede editar cualquier archivo con esos permisos con un prefijo con el /sudo::comando existente .

Ver http://www.gnu.org/software/tramp/ para más detalles.

dgtized
fuente
3

Si usa el ivypaquete y se ha configurado counsel-find-filepara reemplazar find-file, entonces una de las "acciones de hiedra" preconfiguradas para usted ya es editar el archivo como root. La hydracombinación de teclas predeterminada para esa acción es r.

usuario1404316
fuente
2

Hoy existen muchos paquetes que resuelven este problema (a partir de 2018). Algunos de ellos son:

  • sudo-edit, permite cambiar los derechos de edición en un archivo de solo lectura ya abierto. Simplemente M-x sudoescriba una contraseña y ya está. Después de muchos años de uso de este, creo que es el más conveniente para esta necesidad. sudo-editle permite abrir un archivo como cualquier usuario, pero está predeterminado en sudo si no se proporciona ninguno.
  • dired-toggle-sudo. Fue la primera solución empaquetada que encontré después de hacer esta pregunta. Está orientado a Dired, por lo que si prefiere la versión orientada a archivos , consulte la primera viñeta de esta lista.
  • Existen otras soluciones en Melpa
smonff
fuente
2

Si usas Helm. No necesita ningún paquete externo / configuración adicional. Funciona fuera de la caja.

En el interior helm-find-filespuede invocar a find file as rootqué está vinculado C-c r. Esto funciona para archivos o directorios en helm-find-filessesión.

Si no desea escribir la contraseña cada vez que abre archivos / directorios raíz. Pon la siguiente línea en tu~/.authinfo.gpg

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

fuente

azzamsa
fuente