Comment utiliser la commande find sous Linux
Agence web » Actualités du digital » Comment utiliser la commande chattr sous Linux

Comment utiliser la commande chattr sous Linux

Outre les autorisations habituelles de lecture, d’écriture et d’exécution des fichiers, les fichiers Linux ont un autre ensemble d’attributs qui contrôlent d’autres caractéristiques du fichier. Voici comment les voir et les modifier.

Autorisations et attributs

Sous Linux, qui peut accéder à un fichier et ce qu’il peut en faire est contrôlé par un ensemble de autorisations. Que vous puissiez lire le contenu d’un fichier, écrire de nouvelles données dans le fichier ou exécuter un fichier s’il s’agit d’un script ou d’un programme, tout est régi par cet ensemble d’autorisations. Les autorisations sont appliquées au fichier, mais elles définissent les restrictions et les capacités des différentes catégories d’utilisateurs.

Il existe des autorisations pour le propriétaire du dossier, pour le grouper du dossier, et pour autres— c’est-à-dire les utilisateurs qui n’appartiennent pas aux deux premières catégories. Vous pouvez utiliser le ls commande avec le -l (liste longue) option pour voir les autorisations sur un fichier ou un répertoire.

Pour modifier les autorisations, vous utilisez le chmod commande. Au moins, vous pouvez si vous avez des autorisations d’écriture pour le fichier, ou si vous êtes l’utilisateur root.

Nous pouvons voir que les autorisations de fichiers sont centrées sur l’utilisateur car elles accordent ou suppriment des autorisations au niveau de l’utilisateur. En revanche, le les attributs d’un fichier sont centrés sur le système de fichiers. Comme les autorisations, elles sont définies sur le fichier ou le répertoire. Mais une fois qu’ils sont définis, ils sont les mêmes pour tous les utilisateurs.

Les attributs sont une collection de paramètres distincte des autorisations. Les attributs contrôlent des caractéristiques telles que l’immuabilité et d’autres comportements au niveau du système de fichiers. Pour voir les attributs d’un fichier ou d’un répertoire, nous utilisons le lsattr commande. Pour définir les attributs, nous utilisons le chattr commande.

Les autorisations et les attributs sont stockés à l’intérieur inodes. Un inode est une structure de système de fichiers qui contient des informations sur les objets du système de fichiers tels que les fichiers et les répertoires. L’emplacement d’un fichier sur le disque dur, sa date de création, ses autorisations et ses attributs sont tous stockés dans son inode.

Étant donné que différents systèmes de fichiers ont des structures et des capacités sous-jacentes différentes, les attributs peuvent se comporter différemment (ou être complètement ignorés) par certains systèmes de fichiers. Dans cet article, nous utilisons ext4 qui est le système de fichiers par défaut pour de nombreuses distributions Linux.

Regarder les attributs d’un fichier

Le chattr et lsattr commandes seront déjà présentes sur votre ordinateur, il n’est donc pas nécessaire d’installer quoi que ce soit.

Pour vérifier les attributs des fichiers du répertoire courant, utilisez lsattr:

lsattr

Liste des attributs de fichier pour tous les fichiers d'un répertoire

Les lignes en pointillés sont des espaces réservés pour les attributs qui ne sont pas définis. Le seul attribut défini est le e (étendues) attribut. Cela montre que les inodes du système de fichiers utilisent (ou utiliseront si nécessaire)étendues pour pointer vers toutes les parties du fichier sur le disque dur.

Si le fichier est contenu dans une séquence contiguë de blocs de disque dur, son inode n’a qu’à enregistrer les premier et dernier blocs utilisés pour stocker le fichier. Si le fichier est fragmenté, l’inode doit enregistrer le numéro du premier et du dernier bloc de chaque élément du fichier. Ces paires de numéros de bloc de disque dur sont appelées extensions.

Voici la liste des attributs les plus couramment utilisés.

  • un: Ajouter uniquement. Un fichier avec cet attribut ne peut être ajouté qu’à. Il peut toujours y être écrit, mais seulement à la fin du fichier. Il n’est pas possible d’écraser les données existantes dans le fichier.
  • c: Compressé. Le fichier est automatiquement compressé sur le disque dur et décompressé lors de sa lecture. Les données écrites dans les fichiers sont compressées avant d’être écrites sur le disque dur.
  • UN: Non atime mises à jour. Le atime est une valeur dans un inode qui enregistre la dernière fois qu’un fichier a été accédé.
  • C: Pas de copie sur écriture. Si deux processus demandent l’accès à un fichier, ils peuvent recevoir des pointeurs vers le même fichier. Ils ne reçoivent leur propre copie unique du fichier que s’ils essaient d’écrire dans le fichier, ce qui le rend unique pour ce processus.
  • : Pas de vidage. Le Linux dump La commande est utilisée pour écrire des copies de systèmes de fichiers entiers sur un support de sauvegarde. Cet attribut fait dump ignorer le fichier. Il est exclu de la sauvegarde.
  • : Mises à jour synchrones des répertoires. Lorsque cet attribut est activé pour un répertoire, toutes les modifications apportées à ce répertoire sont écrites de manière synchrone, c’est-à-dire immédiatement, sur le disque dur. Les opérations de données peuvent être mises en mémoire tampon.
  • e: Format d’étendue. Le e L’attribut indique que le système de fichiers utilise des étendues pour mapper l’emplacement du fichier sur le disque dur. Vous ne pouvez pas changer cela avec chattr. C’est une fonction du fonctionnement du système de fichiers.
  • je: immuable. Un fichier immuable ne peut pas être modifié, y compris renommer et supprimer. L’utilisateur racine est la seule personne qui peut activer ou désactiver cet attribut.
  • s: Suppression sécurisée. Lorsqu’un fichier avec cet ensemble d’attributs est supprimé, les blocs du disque dur contenant les données du fichier sont écrasés par des octets contenant des zéros. Notez que cela n’est pas honoré par le ext4 système de fichiers.
  • S: Mises à jour synchrones. Modifications apportées à un fichier avec son S ensemble d’attributs sont écrits dans le fichier de manière synchrone.
  • tu: Suppression d’un fichier qui a son u L’ensemble d’attributs entraîne la création d’une copie du fichier. Cela peut être bénéfique pour la récupération de fichiers si le fichier a été supprimé par erreur.

Modification des attributs d’un fichier

Le chattr La commande nous permet de modifier les attributs d’un fichier ou d’un répertoire. Nous pouvons utiliser le + (ensemble) et - (non défini) pour appliquer ou supprimer un attribut, similaire à chmod commande et autorisations.

Le chattr la commande a également un = (régler uniquement) opérateur. Cela définit les attributs d’un fichier ou d’un répertoire uniquement sur les attributs spécifiés dans la commande. C’est-à-dire que tous les attributs ne pas répertoriés sur la ligne de commande sont non défini.

Définition de l’attribut Ajouter uniquement

Définissons l’attribut append-only sur un fichier texte et voyons comment cela affecte ce que nous pouvons faire avec le fichier.

sudo chattr +a text-file.txt

Définition de l'attribut d'ajout uniquement sur un fichier texte

Nous pouvons vérifier que le bit d’ajout uniquement a été défini en utilisant lsattr :

lsattr text-file.txt

Lister les attributs d'un fichier texte

La lettre « a” indique que l’attribut a été défini. Essayons d’écraser le fichier. Rediriger la sortie vers un fichier avec un seul crochet « >” remplace tout le contenu du fichier par la sortie redirigée.

Nous avons préchargé le fichier texte avec quelques lorem ipsum texte d’espace réservé.

cat text-file.txt

Texte d'espace réservé dans un fichier texte

Nous allons rediriger la sortie de ls dans le fichier :

ls -l > text-file.txt
sudo ls -l > text-file.txt

Essayer d'écraser un fichier texte en ajout uniquement

L’opération n’est pas autorisée, même si nous utilisons le sudo commande.

Si nous utilisons deux crochets « >>” pour rediriger la sortie, il est ajouté aux données existantes dans le fichier. Cela devrait être acceptable pour notre fichier texte en ajout uniquement.

sudo ls -l >> text-file.txt

Rediriger la sortie vers la fin d'un fichier texte

Nous revenons à l’invite de commande sans aucun message d’erreur. Jetons un coup d’œil à l’intérieur du fichier pour voir ce qui s’est passé.

cat text-file.txt

Examiner le contenu d'un fichier texte

La sortie redirigée de ls a été ajouté à la fin du fichier.

Nouvelles données ajoutées à un fichier texte en ajout uniquement

Bien que nous puissions ajouter des données au fichier, c’est le seul changement que nous pouvons y apporter. Nous ne pouvons pas le supprimer et ni rooter.

rm text-file.txt
sudo rm text-file.txt

Échec de la suppression d'un fichier texte ajouté uniquement

Définition de l’attribut immuable

Si vous souhaitez protéger un fichier auquel de nouvelles données ne seront jamais ajoutées, vous pouvez définir l’attribut immuable. Cela empêche toute modification du fichier, y compris l’ajout de données.

sudo chattr +i second-file.txt
lsattr second-file.txt

Définition de l'attribut immuable sur un fichier texte

On peut voir le « i” indiquant que l’attribut immuable a été défini. Ayant rendu notre fichier immuable, même l’utilisateur root ne peut pas le renommer (mv), supprime-le (rm), ou ajoutez-y des données.

sudo mv second-file.txt new-name.txt
sudo rm second-file.txt
sudo ls -l >> second-file.txt

Un fichier immuable résistant au changement

Ne comptez pas sur la suppression sécurisée sur ext4

Comme nous l’avons souligné, certains systèmes d’exploitation ne prennent pas en charge tous les attributs. L’attribut de suppression sécurisée n’est pas honoré par le ext famille de systèmes de fichiers, y compris ext4. Ne comptez pas sur cela pour la suppression sécurisée des fichiers.

Il est facile de voir que cela ne fonctionne pas dans ext4. Nous allons définir le s (suppression sécurisée) sur un fichier texte.

sudo chattr +s third-file.txt

Définition de l'attribut de suppression sécurisée sur un fichier texte

Ce que nous allons faire, c’est trouver l’inode qui contient les métadonnées de ce fichier. L’inode contient le premier bloc de disque dur occupé par le fichier. Le fichier contient quelques lorem ipsum texte d’espace réservé.

Nous lirons ce bloc directement à partir du disque dur pour vérifier que nous lisons le bon emplacement du disque dur. Nous allons supprimer le fichier, puis relire ce même bloc de plongée dur une fois de plus. Si l’attribut de suppression sécurisée est honoré, nous devrions lire les octets mis à zéro.

Nous pouvons trouver l’inode du fichier en utilisant le hdparm commande avec le --fibmap (carte de bloc de fichier).

sudo hdparm --fibmap third-file.txt

Trouver l'inode d'un fichier

Le premier bloc de disque dur est 18100656. Nous utiliserons le dd commande de le lire.

Les options sont :

  • si=/dev/sda: Lire à partir du premier disque dur de cet ordinateur.
  • bs=512: Utilisez une taille de bloc de disque dur de 512 octets.
  • sauter=18100656: Sauter tous les blocs avant le bloc 18100656. En d’autres termes, commencer la lecture au bloc 18100656.
  • compte=1: Lire un bloc de données.
sudo dd if=/dev/sda bs=512 skip=18100656 count=1

Lecture du premier bloc disque dur d'un fichier

Comme prévu, nous voyons le lorem ipsum texte d’espace réservé. Nous lisons le bon bloc sur le disque dur.

Nous allons maintenant supprimer le fichier.

rm third-file.txt

Si nous lisons ce même bloc de disque dur, nous pouvons toujours voir les données.

sudo dd if=/dev/sda bs=512 skip=18100656 count=1

Lecture des données d'un bloc de disque dur utilisé par un fichier supprimé

Encore une fois, ne comptez pas sur cela pour une suppression sécurisée sur ext4.Il existe de meilleures méthodes disponibles pour supprimer des fichiers afin qu’ils ne puissent pas être récupérés.

EN RELATION: Comment supprimer des fichiers en toute sécurité sous Linux

Utile, mais à utiliser avec prudence

La définition des attributs des fichiers peut les rendre insensibles aux catastrophes accidentelles. Si vous ne pouvez pas supprimer ou écraser un fichier, c’est assez sûr.

Vous pourriez penser que vous aimeriez les appliquer aux fichiers système et rendre votre installation Linux plus sécurisée. Mais les fichiers système doivent être remplacés périodiquement au fur et à mesure que des mises à jour sont publiées ou que des mises à niveau sont appliquées. Pour cette raison, il est plus sûr de n’utiliser ces attributs que sur des fichiers de votre propre création.

EN RELATION: Comment sécuriser votre serveur Linux avec fail2ban

★★★★★