J'ai un fichier très important utilisé par une application sur mon lieu de travail, je dois m'assurer qu'il n'est pas supprimé, comment puis-je le faire?
Oui, vous pouvez modifier les attributs du fichier en lecture seule.
La commande est:
chattr +i filename
Et pour le désactiver:
chattr -i filename
De man chattr
:
Un fichier avec l'attribut
i
ne peut pas être modifié: il ne peut pas être supprimé ou renommé, aucun lien ne peut être créé vers ce fichier et aucune donnée ne peut être écrite dans le fichier. Seul le superutilisateur ou un processus possédant leCAP_LINUX_IMMUTABLE
la capacité peut définir ou effacer cet attribut.
Gravez-le sur un CD. Mettez le CD dans un lecteur de CD-ROM et accédez-y à partir de là.
Exemple:
# dd if=/dev/zero of=readonly.img bs=1024 count=1024
# mkfs.ext2 readonly.img
# mkdir readonlyfolder
# mount readonly.img readonlyfolder/
# echo "can't delete this" > readonlyfolder/permanent.txt
# umount readonlyfolder
# mount -o ro readonly.img readonlyfolder
# cat readonlyfolder/permanent.txt
can't delete this
# rm readonlyfolder/permanent.txt
rm: cannot remove `readonlyfolder/permanent.txt': Read-only file system
Linux a ce qu'on appelle l'option bind-mount qui est une fonctionnalité plutôt puissante et utile à savoir :
% cd $TMP && mkdir usebindmountluke && cd usebindmountluke
% echo usebindmountluke > preciousfile
% Sudo mount -B preciousfile preciousfile
% Sudo mount -oremount,ro preciousfile
% echo sowhat > preciousfile
zsh: read-only file system: preciousfile
% rm preciousfile
rm: cannot remove ‘preciousfile’: Read-only file system
- ce qui se fait ici est un fichier de montage sur lui-même (oui, vous pouvez le faire sous Linux), puis il est remonté en mode R/O. Bien sûr, cela peut également être fait dans le répertoire.
Vous devez également créer plusieurs liens physiques vers le fichier. Ceux-ci doivent se trouver à divers endroits auxquels les utilisateurs réguliers ne peuvent pas accéder.
De cette façon, même s'ils parviennent à outrepasser votre protection chattr, les données resteront et vous pourrez facilement les restaurer là où votre application les recherche.
Sous Linux, l'indicateur immuable n'est pris en charge que sur certains types de système de fichiers (la plupart des systèmes natifs comme ext4
, xfs
, btrfs
...)
Sur les systèmes de fichiers où il n'est pas pris en charge, une autre option consiste à monter le fichier sur lui-même en mode lecture seule. Cela doit se faire en deux étapes:
mount --bind file file
mount -o remount,bind,ro file
Cela doit être fait à chaque démarrage, par exemple via /etc/fstab
.
D'autres ont répondu à votre question comme vous l'avez posée. Comme @Sven l'a mentionné dans un commentaire, la solution générale à la question "Comment puis-je m'assurer de ne jamais perdre un fichier?" consiste à créer une sauvegarde du fichier. Faites une copie du fichier et stockez-le à plusieurs endroits. De plus, si le fichier est extrêmement important et que votre entreprise a une politique de sauvegarde des données importantes avec un service de sauvegarde, vous pouvez vérifier si ce fichier est inclus dans le service.
Dans un commentaire à la réponse de Kevin , Jerry mentionne:
Eh bien, bien sûr, le fichier est sauvegardé régulièrement, je voulais juste une autre couche de protection contre les utilisateurs qui travaillent parfois sur la boîte avec des autorisations d'utilisateur root. -
Je vais supposer que vous ne pouvez pas changer cette pratique, car c'est une très, très mauvaise idée.
Toutes les suggestions sur l'utilisation d'un appareil en lecture seule ont le même problème - cela en fait un PITA pour que vous puissiez apporter des modifications légitimes lorsque vous en avez besoin. Dans le cas d'un lecteur verrouillable, comme une carte SD, vous rencontrez le problème d'être soudainement vulnérable lorsque vous le déverrouillez pour effectuer vos modifications.
Ce que je recommanderais plutôt, c'est de configurer une autre machine en tant que serveur NFS et de partager le répertoire avec les fichiers importants sur la ou les machines sur lesquelles les utilisateurs ont racine. Partagez le montage en lecture seule, afin que les machines avec des utilisateurs en qui vous n'avez pas confiance ne puissent apporter aucune modification. Lorsque vous devez légitimement apporter des modifications, vous pouvez vous connecter au serveur NFS et y apporter nos modifications.
Nous l'utilisons pour nos serveurs Web, de sorte qu'un exploit réussi contre le serveur Web ne sera pas en mesure d'insérer ou de modifier des fichiers que le serveur servirait ensuite de retour, ou de modifier la configuration.
Notez que cela peut être contourné de la même manière que tous ceux liés au point de montage peuvent être:
Pourquoi ne pas créer une image ISO 9660, qui est en lecture seule par conception?
Montez l'image ISO, et cela ressemblera à un CD-ROM, mais avec les performances d'un disque dur, et les fichiers sur l'image montée seront tout aussi sûrs de la suppression que les fichiers sur un CD-ROM physique.
L'idée de graver le fichier sensible sur un CD et de l'exécuter à partir d'un CD-ROM est intéressante, en supposant que la définition du bit immuable sur le fichier n'est pas jugée suffisante.
Il peut y avoir des problèmes négatifs avec son exécution sur un CD physique, y compris les performances (les lecteurs de CD-ROM sont beaucoup, beaucoup plus lents que les disques durs ou les SSD). Il est probable que le CD-ROM soit retiré par une personne bien intentionnée et remplacé par un disque différent auquel il doit avoir accès. Il est probable qu'une personne malveillante prenne le disque et le jette au micro-ondes (ou à la poubelle), "supprimant" ainsi votre fichier. Il y a l'inconvénient d'avoir à avoir un lecteur de CD-ROM matériel dédié uniquement pour ce fichier, et d'autres facteurs.
Mais le PO a clairement indiqué que l'intention principale est de se protéger contre la suppression accidentelle, et non contre les actes malveillants, et que le ou les fichiers en question sont sauvegardés et récupérables en cas d'accident, mais il est hautement souhaitable que le fichier ne soit jamais être accidentellement supprimé.
Il semble que l'exécution du fichier à partir d'une image ISO montée satisfasse à l'exigence.