Pourquoi sudoedit écrit-il dans un répertoire temporaire?

10

J'ai utilisé sudoeditpour créer un fichier:

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

mais quand je suis allé enregistrer le fichier, il l'a écrit dans un répertoire temporaire (/ var / temp / blahblah). Que se passe-t-il? Pourquoi ne l'enregistre-t-il pas dans le répertoire système?

Tyler Durden
la source

Réponses:

22

Le but sudoeditest de permettre aux utilisateurs de modifier des fichiers auxquels ils n'auraient pas été autorisés autrement, tout en exécutant un éditeur non privilégié. Pour ce faire, sudoeditcopie le fichier à modifier dans un emplacement temporaire, le rend accessible en écriture par l'utilisateur demandeur et l'ouvre dans l'éditeur configuré. C'est pourquoi l'éditeur affiche un nom de fichier non lié dans un répertoire temporaire. Lorsque l'éditeur se ferme, sudoeditvérifie si des modifications ont réellement été apportées et copie le fichier temporaire modifié à son emplacement d'origine si nécessaire.

Stephen Kitt
la source
Certains éditeurs de l'IIRC procéderont également à des vérifications de base pour s'assurer qu'aucune modification du brique informatique n'a été effectuée, mais je ne sais pas à quel point cela est courant.
Fund Monica's Lawsuit
1
@NicHartley: C'est difficile à faire dans le cas général, car il existe de nombreuses façons variées de briquer votre ordinateur. Il a tendance à être spécifique à l'application, par exemple avec visudofor /etc/sudoers.
Kevin
Oh @ Kevin, oups, je pense que je confondais visudopour sudoedit. Je savais visudoque c'était sûr. Merci d'avoir clarifié ça!
Fund Monica's Lawsuit
1

Ceci est bien expliqué dans la sudopage de manuel . La description de -e(ce qui sudoeditéquivaut à) dit:

-e

L' -eoption (modifier) ​​indique qu'au lieu d'exécuter une commande, l'utilisateur souhaite modifier un ou plusieurs fichiers. Au lieu d'une commande, la chaîne " sudoedit" est utilisée lors de la consultation de la politique de sécurité. Si l'utilisateur est autorisé par la politique, les étapes suivantes sont prises:

  1. Des copies temporaires sont faites des fichiers à éditer avec le propriétaire défini sur l'utilisateur appelant.
  2. L'éditeur spécifié par la stratégie est exécuté pour modifier les fichiers temporaires. La sudoerspolitique utilise les SUDO_EDITOR, VISUALet les EDITORvariables d'environnement (dans cet ordre). Si aucun d' entre SUDO_EDITOR, VISUALou EDITORsont fixés, le premier programme répertorié dans l'éditeur sudoers(5)option est utilisée.
  3. S'ils ont été modifiés, les fichiers temporaires sont recopiés à leur emplacement d'origine et les versions temporaires sont supprimées.

Si le fichier spécifié n'existe pas, il sera créé. Notez que contrairement à la plupart des commandes exécutées par sudo, l'éditeur est exécuté avec l'environnement de l'utilisateur appelant non modifié. Si, pour une raison quelconque, sudoest incapable de mettre à jour un fichier avec sa version modifiée, l'utilisateur recevra un avertissement et la copie modifiée restera dans un fichier temporaire.

Notons notamment la troisième étape: ce n'est que si le fichier a été modifié en fin d'édition que l'original est modifié. Donc, si vous avez un programme qui surveille un fichier, cela peut éviter (a) que les écritures intermédiaires soient récupérées, et (b) les actions inutiles si vous avez décidé de ne faire aucun changement à la fin.


la source