GNU/Linux >> Tutoriels Linux >  >> Linux

Autorisations de fichiers et sauvegarde ?

Supposons que vous ouvrez un fichier sur lequel vous disposez d'une autorisation d'écriture.
Pendant ce temps, vous modifiez les autorisations et supprimez l'autorisation d'écriture alors que le fichier est toujours ouvert dans un éditeur.

Que se passera-t-il si vous le modifiez et l'enregistrez ?

Réponse acceptée :

Les autorisations d'un fichier sont vérifiées lorsque le fichier est ouvert. La modification des autorisations n'affecte pas ce que les processus qui ont déjà le fichier ouvert peuvent en faire. Ceci est parfois utilisé avec des processus qui démarrent avec des privilèges supplémentaires, ouvrent un fichier, puis suppriment ces privilèges supplémentaires :ils peuvent toujours accéder au fichier mais ne peuvent pas le rouvrir.

Cependant, les éditeurs ne gardent généralement pas un fichier ouvert. Lorsqu'un éditeur ouvre un document, ce qui se passe sous le capot est que l'éditeur charge le contenu du fichier en mémoire et ferme le fichier. Lorsque vous enregistrez le document, l'éditeur ouvre le fichier et écrit le nouveau contenu.

Les éditeurs peuvent suivre l'une des deux stratégies lors de l'enregistrement d'un fichier. Ils peuvent créer un nouveau fichier, puis le déplacer en place. Alternativement, ils peuvent ouvrir le fichier existant et écraser l'ancien contenu. L'écrasement a l'avantage que l'autorisation et la propriété du fichier ne changent pas et qu'il fonctionne même dans un répertoire en lecture seule. L'inconvénient majeur de l'écrasement est que si la sauvegarde échoue à mi-chemin (crash de l'éditeur, plantage du système, disque plein, …), vous vous retrouvez avec un document tronqué. Différents éditeurs choisissent différentes stratégies; le bon fait d'écrire dans nouveau puis de déplacer si possible, et d'écraser uniquement dans un répertoire en lecture seule (après avoir fait une sauvegarde ailleurs).

Si l'éditeur suit la stratégie nouveau-puis-déplacer, les autorisations sur le fichier n'ont pas d'importance :l'éditeur créera un nouveau fichier, et il n'a besoin que d'une autorisation en écriture sur le répertoire pour cela. Il y a deux exceptions :si le répertoire a le sticky bit, changer la propriété du fichier (mais pas l'autorisation) peut empêcher le processus de déplacer le nouveau fichier en place. Une autre exception concerne les systèmes qui prennent en charge l'autorisation de suppression via les ACL (comme OSX) :la révocation de l'autorisation de suppression du fichier peut rendre le déplacement impossible.

Si l'éditeur suit la stratégie d'écrasement, la révocation de l'autorisation d'écriture rendra la sauvegarde impossible. (Cependant, certains éditeurs qui écrasent par défaut peuvent revenir à nouveau-puis-déplacer.)

Connexe :Comment changer un nom de fichier contenant des caractères ?

Dans Vim, vous pouvez forcer la stratégie d'écrasement en désactivant la backupcopy option; voir aussi pourquoi la valeur de l'inode change lorsque nous éditons dans l'éditeur "vi" ?. Dans Emacs, vous pouvez forcer la stratégie d'écrasement en définissant le paramètre backup-by-copying variable à t .


Linux
  1. Comment copier les autorisations et la propriété des fichiers dans un autre fichier sous Linux

  2. Comment modifier les autorisations et les propriétaires via la ligne de commande

  3. Bases des autorisations de fichiers Linux

  4. Autorisations Linux :une introduction à chmod

  5. Linux - Comprendre les autorisations Unix et les types de fichiers ?

Commande Chmod sous Linux (autorisations de fichiers)

Comment enregistrer un fichier dans Vi / Vim et quitter l'éditeur

Éditeur VIM

Autorisations et propriété des fichiers Linux expliquées avec des exemples

Gérer les autorisations de répertoire et de fichier avec chmod Recursive

Comprendre les autorisations de fichiers de base et la propriété sous Linux