J'ai créé un lien dur pour le fichier shadow. Pour supprimer le mot de passe de l'utilisateur, j'ai ouvert le fichier fantôme dans l'éditeur vi et supprimé le mot de passe crypté, puis j'ai enregistré. La valeur inode du fichier shadow a été modifiée. Puis j'ai mis à jour le mot de passe de l'utilisateur et de nouveau la valeur inode du fichier fantôme a changé. Pourquoi l'inode du fichier fantôme change-t-il lorsqu'il est édité/mis à jour ?
Réponses
Trop de publicités?VI enregistre les données dans un nouveau fichier, puis supprime les liens ou renomme l'ancienne entrée de répertoire. Le lien dur est lié à l'ancien.
C'est l'une des deux façons de garantir la cohérence des données en cas d'échec de la sauvegarde.
L'autre moyen serait de copier l'ancien fichier et de l'écraser. L'ancienne copie aurait alors un inum différent, et le nouveau fichier sauvegardé aurait le même inum qu'avant.
Le code qui gère les écritures de fichiers crée une copie du fichier entier, tel qu'il devrait exister sur le disque, avant que le fichier ne soit écrit. Une fois que le fichier a été écrit sur le disque et purgé, il est renommé au nom approprié (/etc/shadow ou /etc/gshadow, pour les fichiers d'ombre de groupe).
Le problème n'est pas seulement la cohérence des données. Il existe un petit nombre de fichiers qui doivent être présents pour que le système soit utilisable, et les fichiers de sécurité en font partie. L'objectif est d'éviter une situation dans laquelle le système peut se planter, ou la commande correspondante peut être suspendue (la touche Ctrl-Z ou un SIGSTOP ...) et les fichiers sont dans un état non sécurisé. "Insecure" peut aussi inclure "n'existe pas" -- le renommage non-atomique d'un fichier peut laisser un intervalle de temps où le fichier /etc/shadow n'existe pas du tout.