GNU/Linux >> Tutoriels Linux >  >> Linux

Commande Chattr sous Linux (Définir le bit immuable)

Chattr (Change Attribute) est un utilitaire Linux en ligne de commande utilisé pour modifier les attributs de fichier. Il peut définir et supprimer certains attributs d'un fichier dans le système Linux pour sécuriser la suppression ou la modification accidentelle de fichiers et de dossiers importants, même si vous êtes connecté en tant qu'utilisateur root.

Ainsi, en utilisant la commande chattr, vous rendez le fichier immuable. En d'autres termes, cela signifie qu'il est utilisé pour arrêter la suppression accidentelle de fichiers et de répertoires. Vous ne pouvez pas supprimer les fichiers sécurisés via l'attribut chattr même si vous disposez d'une autorisation complète sur les fichiers.

Ceci est très utile dans les fichiers système tels que les fichiers shadow et passwd qui contiennent toutes les informations utilisateur et les mots de passe. Ces attributs ne peuvent être définis que sur des fichiers et des répertoires situés dans un système de fichiers ext2, ext3 ou ext4.

Syntaxe de la commande chattr et utilisation

Ci-dessous la syntaxe de la commande chattr :

       chattr [ -RVf ] [ -v version ] [ mode ] files...

Attributs de fichier que nous pouvons utiliser avec la commande chattr :

  • a - le fichier ne peut être ouvert qu'en mode ajout pour l'écriture.
  • A - l'enregistrement atime du fichier n'est pas modifié. Cela évite une certaine quantité d'E/S disque pour les systèmes portables.
  • c - le fichier est automatiquement compressé sur le disque par le noyau. Une lecture de ce fichier renvoie des données non compressées. Une écriture dans ce fichier compresse les données avant de les stocker sur le disque.
  • C - le fichier ne sera pas soumis aux mises à jour de copie sur écriture. Cet indicateur n'est pris en charge que sur les systèmes de fichiers qui effectuent une copie sur écriture. Si le drapeau 'C' est défini sur un répertoire, il n'aura aucun effet sur le répertoire
  • d - le fichier n'est pas candidat à la sauvegarde lorsque le programme de vidage est exécuté.
  • D - lorsqu'un répertoire est modifié, les changements sont écrits de manière synchrone sur le disque; cela équivaut à l'option de montage 'dirsync' appliquée à un sous-ensemble de fichiers.
  • i - le fichier ne peut pas être modifié, 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 peut définir ou effacer cet attribut.
  • j - le fichier a toutes ses données écrites dans le journal ext3 ou ext4 avant d'être écrites dans le fichier lui-même,
  • s - si le fichier est supprimé, ses blocs sont remis à zéro et réécrits sur le disque.
  • S - si le fichier est modifié, les modifications sont écrites de manière synchrone sur le disque; cela équivaut à l'option de montage 'sync' appliquée à un sous-ensemble de fichiers.
  • t - le fichier n'aura pas de fragment de bloc partiel à la fin du fichier fusionné avec d'autres fichiers
  • T - le répertoire sera considéré comme le sommet des hiérarchies de répertoires aux fins de l'allocateur de blocs Orlov.
  • u - fait que si un fichier est supprimé, son contenu est enregistré. Cela permet à l'utilisateur de demander sa restauration

1) Comment définir l'attribut de fichier (Définir le bit immuable)

Pour définir un attribut de fichier, nous utiliserons la commande chattr avec + opérateur suivi du nom de l'attribut.

Voyons avec des exemples comment définir un attribut immuable sur un fichier. Seul root ou utilisateur avec privilège sudo peut définir et supprimer un indicateur immuable sur un fichier.

Un fichier avec un attribut immuable :

  • Ne peut pas être modifié, supprimé, renommé
  • Aucun lien symbolique ou physique ne peut être créé par quiconque, y compris l'utilisateur root.
  • Aucune donnée ne peut être écrite dans le fichier

Créons un fichier vide en utilisant la commande touch comme suit :

$ touch file1

Voyons maintenant comment lister les attributs du fichier en utilisant lsattr commande :

$ lsattr 
-------------e-- ./nagios-cookbook-tutorial
-------------e-- ./chefdk_1.3.40-1_amd64.deb
-------------e-- ./file1

Ajoutez du contenu au fichier à l'aide de la commande echo :

$ echo "Test of i attribute" > file1 
$ cat file1 
Test of i attribute

Maintenant, nous pouvons définir un attribut immuable en utilisant +i sur le fichier (fichier1).

$ sudo chattr +i file1
$ lsattr 
-------------e-- ./nagios-cookbook-tutorial
-------------e-- ./chefdk_1.3.40-1_amd64.deb
----i--------e-- ./file1

Dans les commandes suivantes, nous allons essayer d'ajouter, de supprimer à la fois l'utilisateur normal et l'utilisateur sudo (root) :

$ echo "Try to edit after set i attribute" >> file1 
-bash: file1: Permission denied
$ sudo echo "Try to edit after set i attribute" >> file1 
-bash: file1: Permission denied
$ rm -f file1 
rm: cannot remove 'file1': Operation not permitted
$ sudo rm -f file1 
rm: cannot remove 'file1': Operation not permitted

On peut observer que surtout les opérations ne sont pas autorisées.

Remarque : Vous pouvez protéger les fichiers importants comme /etc/passwd ou /etc/shadow , les protège d'un retrait ou d'une altération accidentels et désactive également la création de comptes d'utilisateurs. Mais lorsque vous essaierez de créer un nouvel utilisateur système, vous obtiendrez un message d'erreur disant "impossible d'ouvrir /etc/passwd". Si vous essayez de changer le mot de passe, vous serez invité à entrer un nouveau mot de passe mais lors de votre prochaine connexion, le nouveau mot de passe ne semblera pas valide, vous devrez utiliser l'ancien mot de passe pour vous connecter.

2) Comment supprimer l'attribut (unset) sur les fichiers

Pour supprimer tout attribut du fichier, nous devons utiliser - opérateur suivi du nom de l'attribut.

Dans l'exemple suivant, désélectionnons l'attribut immuable du fichier (fichier1).

$ sudo chattr -i file1 
$ lsattr file1
-------------e-- ./file1

Vous devriez maintenant pouvoir effectuer toutes les opérations normales sur le fichier.

3) Comment sécuriser les répertoires avec l'attribut 'i'

Afin de sécuriser le répertoire, nous devons définir l'attribut de manière récursive (-R) en utilisant + opérateur.

La commande suivante définira le bit immuable sur le répertoire ('linoxide') de manière récursive :

$ sudo chattr -R +i linoxide/ 
$ lsattr -d linoxide
----i--------e-- linoxide/

Pour désarmer, vous devez utiliser - opérateur suivi de i attribut.

$ sudo chattr -R -i linoxide/

4) Ajouter des données au fichier sans modifier les données existantes

Il est possible de permettre à chacun de simplement ajouter des données sur un fichier sans changer ou modifier les données déjà saisies avec le a attribut.

Cela signifie que vous pouvez uniquement ajouter du contenu sur le fichier en cours sans modifier les données déjà présentes.

Les exemples suivants définissent l'attribut d'ajout au fichier (fichier2).

$ sudo chattr +a file2

6) Comment répertorier les attributs de fichier

Pour lister les attributs actuels des fichiers ou des répertoires, nous devons utiliser la commande lsattr. La commande suivante répertorie les attributs de fichier pour tous les fichiers et dossiers du répertoire actuel :

$ lsattr 
-------------e-- ./coreutils-8.22-18.el7.x86_64.rpm
-------------e-- ./pac
-------------e-- ./utils
-------------e-- ./linox

Vous pouvez vérifier l'attribut de fichier d'un seul à l'aide de la commande suivante :

$ lsattr coreutils-8.22-18.el7.x86_64.rpm 
-------------e-- coreutils-8.22-18.el7.x86_64.rpm

Pour vérifier les attributs d'un répertoire, utilisez -d possibilité

$ lsattr -d test
-------------e-- test/

Conclusion

Nous savons maintenant comment protéger nos fichiers et dossiers à l'aide de la commande chattr sous Linux. J'espère que vous avez apprécié la lecture de ce tutoriel et s'il vous plaît laissez vos suggestions dans la section des commentaires ci-dessous. Pour plus d'informations, veuillez consulter man chattr.


Linux
  1. commande chattr sous Linux avec des exemples

  2. Commande wc Linux

  3. Commande grep Linux

  4. ln Exemples de commandes sous Linux

  5. file Exemples de commandes sous Linux

Commande Gzip sous Linux

Commande Dissocier sous Linux (Supprimer le fichier)

Commande Chmod sous Linux (autorisations de fichiers)

Commande Gunzip sous Linux

Commande Stat sous Linux

Commande Chattr sous Linux (attributs de fichier)