Parfois, je ne pense pas correctement et accidentellement "SHIFT + DELETE" mes données. Pire encore, je ne sauvegarde même pas les données avant de les supprimer. Si vous êtes comme moi, voici une bonne nouvelle pour vous. Je connais un utilitaire de ligne de commande utile appelé "chattr" qui est utilisé pour empêcher la suppression ou la modification accidentelle de fichiers et de dossiers sous Linux.
Chattr, abréviation de Ch ange Attr ibute, applique/supprime certains attributs à un fichier ou un dossier de votre système Linux. Ainsi, personne ne peut supprimer ou modifier les fichiers et les dossiers accidentellement ou intentionnellement, même en tant qu'utilisateur root . Cela semble utile, n'est-ce pas ? En effet !
Empêchez la suppression ou la modification accidentelle de fichiers et de dossiers sous Linux à l'aide de Chattr
Par défaut, Chattr est préinstallé sur de nombreux systèmes d'exploitation Linux. Ne nous soucions donc pas de l'installation.
La syntaxe par défaut de la commande chattr est :
chattr [operator] [switch] [filename]
chattr a les opérateurs suivants :
- L'opérateur '
+
' entraîne l'ajout des attributs sélectionnés aux attributs existants des fichiers. - L'opérateur '
-
' entraîne leur suppression. - L'opérateur '
=
' fait qu'ils sont les seuls attributs que les fichiers ont.
Chattr a différents attributs, à savoir - aAcCdDeijsStTu . Chaque lettre applique un attribut particulier à un fichier comme indiqué ci-dessous.
- un - ajouter uniquement,
- Un - pas de mises à jour ponctuelles,
- c - compressé,
- C - pas de copie en écriture,
- d - pas de vidage,
- D - mises à jour synchrones des répertoires,
- e - format d'étendue,
- je - immuable,
- j - journalisation des données,
- P - hiérarchie du projet,
- s - suppression sécurisée,
- S - mises à jour synchrones,
- t - pas de fusion de queue,
- T - haut de la hiérarchie des répertoires,
- u - non supprimable.
Dans ce tutoriel, nous allons discuter de l'utilisation de deux attributs, à savoir a , je qui sont utilisés pour empêcher la suppression de fichiers et de dossiers.
Empêcher les fichiers d'être supprimés accidentellement sous Linux
Permettez-moi de créer un fichier appelé file.txt
dans mon répertoire courant.
$ touch file.txt
Ou,
$ > file.txt
Maintenant, je vais appliquer "i
" attribut qui rend le fichier immuable. Cela signifie - vous ne pouvez pas supprimer, modifier le fichier, même si vous êtes le propriétaire du fichier et l'utilisateur root.
$ sudo chattr +i file.txt
Vous pouvez vérifier les attributs du fichier à l'aide de la commande :
$ lsattr file.txt
Exemple de résultat :
----i---------e---- file.txt

Maintenant, essayez de supprimer le fichier en tant qu'utilisateur normal ou avec les privilèges sudo.
$ rm file.txt
Exemple de résultat :
rm: cannot remove 'file.txt': Operation not permitted
Laissez-moi essayer avec la commande sudo :
$ sudo rm file.txt
Exemple de résultat :
rm: cannot remove 'file.txt': Operation not permitted
Essayons d'ajouter du contenu dans le fichier texte.
$ echo 'Hello World!' >> file.txt
Exemple de résultat :
bash: file.txt: Operation not permitted

Même si vous essayez de supprimer le fichier de votre gestionnaire de fichiers en mode graphique, vous ne pouvez pas le supprimer.

Comme vous l'avez remarqué dans les sorties ci-dessus, nous ne pouvons pas supprimer ou modifier le fichier même en tant qu'utilisateur root.
Pour révoquer des attributs, utilisez simplement "-i
" changer comme indiqué ci-dessous.
$ sudo chattr -i file.txt
Maintenant, l'attribut immuable a été supprimé. Vous pouvez maintenant modifier ou supprimer le fichier comme vous le souhaitez.
$ echo 'Hello World!' >> file.txt
$ cat file.txt Hello World!
$ rm file.txt

De même, vous pouvez empêcher la suppression ou la modification accidentelle des répertoires, comme décrit dans la section suivante.
Empêchez les dossiers d'être supprimés et modifiés accidentellement sous Linux
Créez un répertoire appelé dir1
et un fichier nommé file.txt
dans ce répertoire.
$ mkdir dir1 && touch dir1/file.txt
Maintenant, rendez ce répertoire et son contenu (file.txt) immuables à l'aide de la commande :
$ sudo chattr -R +i dir1
Où,
-R
- rendra le dir1 et son contenu immuables de manière récursive.+i
- rend le répertoire immuable.
Maintenant, essayez de supprimer le répertoire en tant qu'utilisateur normal ou en utilisant l'utilisateur sudo.
$ rm -fr dir1
$ sudo rm -fr dir1
Vous obtiendrez le résultat suivant :
rm: cannot remove 'dir1/file.txt': Operation not permitted
Essayez d'ajouter du contenu dans le fichier en utilisant "echo
". Avez-vous réussi ? Bien sûr, vous n'avez pas pu !

Pour révoquer les attributs, exécutez :
$ sudo chattr -R -i dir1
Maintenant, vous pouvez supprimer ou modifier le contenu de ce répertoire comme d'habitude.
Empêchez les fichiers et les dossiers d'être supprimés accidentellement, mais autorisez l'opération d'ajout sous Linux
Nous savons maintenant comment empêcher la suppression et la modification accidentelles de fichiers et de dossiers. Ensuite, nous allons empêcher la suppression des fichiers et des dossiers, mais autoriser l'écriture du fichier en mode ajout uniquement. Cela signifie que vous ne pouvez pas éditer, modifier les données existantes dans le fichier, renommer le fichier et supprimer le fichier. Vous ne pouvez ouvrir le fichier pour l'écriture qu'en mode ajout.
Pour définir l'attribution du mode d'ajout à un fichier/répertoire, nous procédons comme suit :
Pour les fichiers :
$ sudo chattr +a file.txt
Pour les répertoires :
$ sudo chattr -R +a dir1
Un fichier/dossier avec l'attribut 'a' ne peut être ouvert qu'en mode ajout pour l'écriture.
Ajoutez du contenu au(x) fichier(s) pour vérifier si cela fonctionne ou non.
$ echo 'Hello World!' >> file.txt
$ echo 'Hello World!' >> dir1/file.txt
Vérifiez le contenu du fichier à l'aide de la commande cat :
$ cat file.txt
$ cat dir1/file.txt
Exemple de résultat :
Hello World!

Comme vous pouvez le voir, nous pouvons être en mesure d'ajouter le contenu. Cela signifie que nous pouvons modifier les fichiers et les dossiers.
Essayons de supprimer le fichier ou le dossier maintenant.
$ rm file.txt
Sortie :
rm: cannot remove 'file.txt': Operation not permitted
Essayons de supprimer le dossier :
$ rm -fr dir1/
Ou essayez avec sudo :
$ sudo rm -fr dir1/
Exemple de résultat :
rm: cannot remove 'dir1/file.txt': Operation not permitted

Pour supprimer les attributs, exécutez les commandes suivantes :
Pour les fichiers :
$ sudo chattr -R -a file.txt
Pour les répertoires :
$ sudo chattr -R -a dir1/
Maintenant, vous pouvez supprimer ou modifier les fichiers et dossiers comme d'habitude.
Pour plus de détails, reportez-vous aux pages de manuel.
$ man chattr
Conclusion
La sauvegarde et la protection des données est l'une des tâches principales d'un administrateur système Linux. Il existe de nombreux logiciels gratuits et commerciaux de protection des données disponibles sur le marché. Heureusement, nous avons cet outil intégré qui nous aide à protéger les données contre la suppression ou la modification accidentelle. Chattr peut être utilisé comme outil supplémentaire pour protéger les fichiers et données système importants de votre système Linux.
Suggestion de lecture :
- Un moyen simple de protéger les fichiers contre la suppression accidentelle sous Linux
- Comment éviter un arrêt ou un redémarrage accidentel sous Linux