Recherche de site Web

5 commandes 'chattr' pour rendre les fichiers importants IMMUTABLES (inchangeables) sous Linux


chattr (Change Attribute) est un utilitaire Linux en ligne de commande utilisé pour définir/désactiver certains attributs d'un fichier dans le système Linux afin de 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.

Dans les systèmes de fichiers natifs Linux, c'est-à-dire ext2, ext3, ext4, btrfs, etc., prend en charge tous les indicateurs, bien que tous les indicateurs ne prennent pas en charge tous les FS non natifs. On ne peut pas supprimer ou modifier un fichier/dossier une fois les attributs définis avec la commande chattr, même si l'on dispose de toutes les autorisations sur celui-ci.

Ceci est très utile pour définir des attributs dans les fichiers système tels que les fichiers passwd et shadow contenant les informations de l'utilisateur.

Syntaxe de chattr
chattr [operator] [flags] [filename]
Attributs et drapeaux

Voici la liste des attributs communs et des indicateurs associés qui peuvent être définis/désactivés à l'aide de la commande chattr.

  1. Si un fichier est accédé avec l'attribut « A », son enregistrement atime n'est pas mis à jour.
  2. Si un fichier est modifié avec l'attribut 'S' défini, les modifications sont mises à jour de manière synchrone sur le disque.
  3. Un fichier est défini avec l'attribut 'a' et ne peut être ouvert qu'en mode ajout pour l'écriture.
  4. Un fichier est défini avec l'attribut 'i', ne peut pas être modifié (immuable). Cela signifie pas de changement de nom, pas de création de lien symbolique, pas d'exécution, pas d'écriture, seul le superutilisateur peut supprimer l'attribut.
  5. Un fichier avec l'attribut 'j' est défini, toutes ses informations mises à jour dans le journal ext3 avant d'être mises à jour dans le fichier lui-même.
  6. Un fichier est défini avec l'attribut 't', sans fusion finale.
  7. Un fichier avec l'attribut 'd' ne sera plus candidat à la sauvegarde lorsque le processus de vidage sera exécuté.
  8. Lorsqu'un fichier doté de l'attribut « u » est supprimé, ses données sont enregistrées. Cela permet à l'utilisateur de demander sa restauration.
Opérateur
  1. + : Ajoute l'attribut à l'attribut existant des fichiers.
  2.  : Supprime l'attribut de l'attribut existant des fichiers.
  3. = : Conserve les attributs existants que possèdent les fichiers.

Ici, nous allons montrer quelques exemples de commandes chattr pour définir/désactiver les attributs d'un fichier et de dossiers.

1. Comment ajouter des attributs sur les fichiers pour les protéger contre la suppression

À des fins de démonstration, nous avons utilisé respectivement le dossier demo et le fichier important_file.conf. Avant de configurer les attributs, assurez-vous de vérifier que les fichiers existants ont des attributs définis à l'aide de la commande 'ls -l'. Avez-vous vu les résultats, actuellement aucun attribut n'est défini.

[root@tecmint tecmint]# ls -l
total 0
drwxr-xr-x. 2 root root 6 Aug 31 18:02 demo
-rwxrwxrwx. 1 root root 0 Aug 31 17:42 important_file.conf

Pour définir l'attribut, nous utilisons le signe + et pour le désactiver, nous utilisons le signe avec la commande chattr. Alors, définissons un bit immuable sur les fichiers avec les indicateurs +i pour empêcher quiconque de supprimer un fichier, même un utilisateur root n'a pas l'autorisation de le supprimer.

[root@tecmint tecmint]# chattr +i demo/
[root@tecmint tecmint]# chattr +i important_file.conf

Remarque : Le bit immuable +i ne peut être défini que par un superutilisateur (c'est-à-dire root) ou un utilisateur disposant des privilèges sudo peut le définir. .

Après avoir défini le bit immuable, vérifions l'attribut avec la commande 'lsattr'.

[root@tecmint tecmint]# lsattr
----i----------- ./demo
----i----------- ./important_file.conf

Maintenant, j'ai essayé de supprimer de force, de renommer ou de modifier les autorisations, mais cela ne sera pas autorisé et indique « Opération non autorisée ».

[root@tecmint tecmint]# rm -rf demo/
rm: cannot remove âdemo/â: Operation not permitted
[root@tecmint tecmint]# mv demo/ demo_alter
mv: cannot move âdemo/â to âdemo_alterâ: Operation not permitted
[root@tecmint tecmint]# chmod 755 important_file.conf
chmod: changing permissions of âimportant_file.confâ: Operation not permitted

2. Comment supprimer l'attribut sur les fichiers

Dans l'exemple ci-dessus, nous avons vu comment définir l'attribut pour sécuriser et empêcher la suppression accidentelle des fichiers. Ici, dans cet exemple, nous verrons comment réinitialiser (attribut non défini) les autorisations et permettre de rendre un fichier modifiable ou altérable en utilisant -i drapeau.

[root@tecmint tecmint]# chattr -i demo/ important_file.conf

Après avoir réinitialisé les autorisations, vérifiez le statut immuable des fichiers à l'aide de la commande « lsattr ».

[root@tecmint tecmint]# lsattr
---------------- ./demo
---------------- ./important_file.conf

Vous voyez dans les résultats ci-dessus que l'indicateur « -i » a été supprimé, ce qui signifie que vous pouvez supprimer en toute sécurité tous les fichiers et dossiers résidant dans le dossier tecmint.

[root@tecmint tecmint]# rm -rf *

[root@tecmint tecmint]# ls -l
total 0

3. Comment sécuriser les fichiers /etc/passwd et /etc/shadow

La définition d'un attribut immuable sur les fichiers /etc/passwd ou /etc/shadow les protège contre une suppression accidentelle ou une falsification et désactive également la création de compte utilisateur.

[root@tecmint tecmint]# chattr +i /etc/passwd
[root@tecmint tecmint]# chattr +i /etc/shadow

Essayez maintenant de créer un nouvel utilisateur système, vous recevrez un message d'erreur disant 'ne peut pas ouvrir /etc/passwd'.

[root@tecmint tecmint]# useradd tecmint
useradd: cannot open /etc/passwd

De cette façon, vous pouvez définir des autorisations immuables sur vos fichiers importants ou fichiers de configuration système pour empêcher leur suppression.

4. Ajouter des données sans modifier les données existantes sur un fichier

Supposons que vous souhaitiez uniquement autoriser tout le monde à ajouter des données dans un fichier sans changer ou modifier les données déjà saisies, vous pouvez utiliser l'attribut « a » comme suit.

[root@tecmint tecmint]# chattr +a example.txt

[root@tecmint tecmint]# lsattr example.txt
-----a---------- example.txt

Après avoir défini le mode ajout, le fichier peut être ouvert pour écrire des données uniquement en mode ajout. Vous pouvez supprimer la définition de l'attribut append comme suit.

[root@tecmint tecmint]# chattr -a example.txt

Essayez maintenant de remplacer le contenu déjà existant sur un fichier example.txt, vous obtiendrez une erreur indiquant « Opération non autorisée ».

[root@tecmint tecmint]# echo "replace contain on file." > example.txt
-bash: example.txt: Operation not permitted

Essayez maintenant d'ajouter du nouveau contenu à un fichier existant example.txt et vérifiez-le.

[root@tecmint tecmint]# echo "replace contain on file." >> example.txt
[root@tecmint tecmint]# cat example.txt
Here is the example to test 'a' attribute mean append only.
replace contain on file.

5. Comment sécuriser les répertoires

Pour sécuriser l'ensemble du répertoire et ses fichiers, nous utilisons le commutateur « -R » (récursivement) avec l'indicateur « +i » ainsi que le chemin complet du dossier.

[root@tecmint tecmint]# chattr -R +i myfolder

Après avoir défini l'attribut de manière récursive, essayez de supprimer le dossier et ses fichiers.

[root@tecmint tecmint]# rm -rf myfolder/
rm: cannot remove 'myfolder/': Operation not permitted

Pour annuler la définition de l'autorisation, nous utilisons le même commutateur « -R » (récursivement) avec l'indicateur « -i » ainsi que le chemin complet du dossier.

[root@tecmint tecmint]# chattr -R -i myfolder

C'est ça! Pour en savoir plus sur les attributs, les indicateurs et les options de la commande chattr, utilisez les pages de manuel.