¿Por qué sudoedit escribe en un directorio temporal?

10

Solía sudoeditcrear un archivo:

 $ sudoedit /etc/systemd/system/apache2.service

pero cuando fui a guardar el archivo, lo escribió en un directorio temporal (/ var / temp / blahblah). Que esta pasando? ¿Por qué no lo guarda en el directorio del sistema?

Tyler Durden
fuente

Respuestas:

22

El objetivo sudoedites permitir a los usuarios editar archivos que de otro modo no se les permitiría, mientras ejecutan un editor sin privilegios. Para que esto suceda, sudoeditcopia el archivo que se va a editar en una ubicación temporal, el usuario que lo solicita puede escribirlo y lo abre en el editor configurado. Es por eso que el editor muestra un nombre de archivo no relacionado en un directorio temporal. Cuando el editor sale, sudoeditverifica si realmente se hicieron cambios y copia el archivo temporal modificado de nuevo a su ubicación original si es necesario.

Stephen Kitt
fuente
IIRC, algunos editores también harán controles básicos de sanidad para asegurar que no se hicieron cambios en la computadora, pero no estoy seguro de qué tan común es eso.
Financia la demanda de Mónica el
1
@NicHartley: Es difícil hacerlo en el caso general, porque hay muchas formas variadas de bloquear su computadora. Tiende a ser específico de la aplicación, por ejemplo, con visudofor /etc/sudoers.
Kevin
@ Kevin Oh, gritos, creo que confunde visudoa sudoedit. Lo sabía visudoseguro. ¡Gracias por aclarar eso!
Financia la demanda de Mónica el
1

Esto se explica muy bien en la página de sudomanual . La descripción de -e(que sudoedites equivalente a) dice:

-e

La -eopción (editar) indica que, en lugar de ejecutar un comando, el usuario desea editar uno o más archivos. En lugar de un comando, la cadena " sudoedit" se usa al consultar la política de seguridad. Si el usuario está autorizado por la política, se toman los siguientes pasos:

  1. Se realizan copias temporales de los archivos que se editarán con el propietario configurado para el usuario que invoca.
  2. El editor especificado por la política se ejecuta para editar los archivos temporales. La sudoerspolítica utiliza los SUDO_EDITOR, VISUALy EDITORlas variables de entorno (en ese orden). Si ninguno de SUDO_EDITOR, VISUALo EDITORestán configurados, sudoers(5)se utiliza el primer programa listado en la opción del editor .
  3. Si se han modificado, los archivos temporales se vuelven a copiar en su ubicación original y se eliminan las versiones temporales.

Si el archivo especificado no existe, se creará. Tenga en cuenta que, a diferencia de la mayoría de los comandos ejecutados sudo, el editor se ejecuta sin modificar el entorno del usuario que invoca. Si, por alguna razón, sudono puede actualizar un archivo con su versión editada, el usuario recibirá una advertencia y la copia editada permanecerá en un archivo temporal.

En particular, tenga en cuenta el tercer paso: solo si el archivo se ha modificado al final de la edición, se cambia el original. Entonces, si tiene un programa que mira un archivo, esto puede ayudar a evitar (a) escrituras intermedias que se recogen, y (b) acciones innecesarias si decide no hacer cambios al final.


fuente