93 votes

Linux - Existe-t-il un moyen d'empêcher/protéger un fichier d'être supprimé même par l'utilisateur root ?

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 ?

139voto

Itai Ganot Points 10219

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'attribut CAP_LINUX_IMMUTABLE peut définir ou supprimer cet attribut.

87voto

Gravez-le sur un CD. Placez le CD dans un lecteur de CD-ROM et accédez-y.

29voto

Ken A Points 391
  1. Créez une image du système de fichiers.
  2. Montez l'image.
  3. Copiez le fichier sur l'image montée.
  4. Démontez l'image et remontez-la en lecture seule.
  5. 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

7voto

andrew Points 87

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.

7voto

cyphun Points 53

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X