J'ai un fichier très important qu'une application sur mon lieu de travail utilise, je dois m'assurer qu'il n'est pas supprimé, comment puis-je le faire ?
Réponses
Trop de publicités?Oui, vous pouvez changer 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 le nom
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 l'attributCAP_LINUX_IMMUTABLE
peut définir ou supprimer cet attribut.
- Créez une image du système de fichiers.
- Montez l'image.
- Copiez le fichier sur l'image montée.
- Démontez l'image et remontez-la en lecture seule.
- Maintenant, vous ne pouvez pas le supprimer.
Ejemplo:
# 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
Vous devez également créer plusieurs liens matériels vers le fichier. Ceux-ci doivent se trouver à différents endroits auxquels les utilisateurs habituels ne peuvent pas accéder.
De cette façon, même s'ils parviennent à passer outre la protection de votre chattr, les données seront conservées et vous pourrez facilement les restaurer là où votre application les recherche.
Linux a ce qu'on appelle bind-mount qui est une fonction assez puissante et utile de 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 est fait ici est de lier le montage du fichier à lui-même (oui, vous pouvez faire ça sous Linux), puis il est remonté en mode R/O. Bien sûr, cela peut aussi être fait pour un répertoire.
- Réponses précédentes
- Plus de réponses