[Ubuntu][chattr] Protéger un partage Samba accessible en écriture d’une suppression de dossier accidentelle

On va voir comment, protéger un partage Samba accessible en écriture, d'une suppression de dossier accidentelle, avec chattr.

Grâce à Samba on peut choisir de partager un dossier sur le réseau locale, il n'y a que 2 options .

  1. le rendre accessible (visible)
  2. permettre l'écriture mais aussi la suppression de données

Grâce à "chattr" on va pouvoir retirer le droit de supprimer des dossiers dans les répertoires partagés via Samba. Pour exemple, le dossier musique, qui est susceptible d’être modifié par des players ayant la fonctionnalité (abusive) de supprimer des fichiers sur le disque dur.

sudo chattr -R +a ~/Musique

Pour annuler cette restriction, ajouter l'option -a:

sudo chattr -R -a ~/Musique
  • append only (a), « ajouter seulement » ─ réservé à root. Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter.
  • La commande peut être utilisée de manière récursive au moyen de l'option -R : pour affecter toute une hiérarchie.

 

Liste des attributs de chattr trouvée sur lea-linux :

append only (a), « ajouter seulement » ─ réservé à root
Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter.
compressed (c), « compressé » ─ expérimental
Le fichier est automatiquement compressé ─ si c'est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l'utilisateur (la commande ls -l, par exemple, montre la taille décompressée).
Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu'on y crée.
no dump (d), « pas de sauvegarde »
Un fichier ainsi marqué sera ignoré par la commande de sauvegarde dump (qui ne fonctionne que pour ext2 et ext3). Cet attribut est utile pour empêcher la sauvegarde par dump d'un fichier ou répertoire situés dans un système de fichiers monté avec l'option dump positionnée à 1 (cf fstab).
immutable (i), « immuable » ─ réservé à root
Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu'on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l'attribut « immuable » d'un fichier.
Cet attribut est sans doute l'un des plus intéressants.
data journalling (j), « journalisation des données » ─ réservé à root
Cet attribut n'est utile qu'avec une partition en ext3 montée avec les options de journalisation des données data=ordered (montage par défaut) ou data=writeback pour simuler une journalisation du type data=journal, où les données sont écrites dans le journal avant de l'être dans le fichier lui-même. Consulter man mount 8 pour plus de détails sur les mécanismes de journalisation d'ext3.
Sur une partition ext3 en mode data=journal, cet attribut est ignoré, de même que sur les partitions en ext2 et reiserfs, le premier type n'étant pas journalisé, le second l'étant d'une manière incompatible.
secure deletion (s), « effacement sécurisé » ─ expérimental
Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu'il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu'on puisse récupérer les données malgré l'effacement.
Normalement, effacer un fichier consiste seulement à détruire toute référence vers l'espace occupé par les données de ce fichier dans la partition. Il n'est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n'est plus accessible mais en plus tous ses bits sont réécrits.
no tail-merging (t)
undeletable (u), « ineffaçable » ─ expérimental
Lors d'un effacement, les références vers l'espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l'espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n'est plus possible de récupérer les données en question.
L'attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu'on puisse les récupérer si besoin est. L'espace-disque n'est donc pas libéré.
no atime updates (A), « pas de mise à jour de la date de dernier accès »
À chaque fois qu'on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c'est le cas pour les serveurs de news), ces modifications peuvent ralentir le système.
Donner à un fichier l'attribut no atime updates permet d'éviter ce problème. Noter que la même option existe lorsque l'on monte une partition dans l'arborescence globale (mount -o noatime), option que l'on peut inscrire dans /etc/fstab.
synchronous directory updates (D), « mise à jour synchone des répertoires »
synchronous updates (S), « mise à jour synchrone »
Ces deux attributs ont un effet similaire. Le premier sert aux répertoires, le second aux fichiers. Les données des répertoires et fichiers concernés sont mises à jour dès qu'une modification a eu lieu (et non en différé, comme c'est le cas par défaut pour ext2 et ext3). C'est l'équivalent des options de montage mount -o sync et mount -o dirsync (qu'on peut aussi passer dans fstab) mais pour une sous-partie de l'arborescence et non la partition entière.
top of directory hierarchy (T), « répertoire racine » ─ réservé à root
Cet attribut indique au répartiteur de blocs Orlov (ou Orlov block allocator, utilisé par le noyau Linux pour les systèmes de fichiers ext2 et ext3 depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires.
L'allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l'espace disponible tout en garantissant une qu'il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d'un même répertoire. Dans le cas contraire, les données risquent d'être éparpillées, voire fragmentées (les blocs d'un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l'avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d'éloigner le plus possible les uns des autres les répertoires racines, pour qu'ils disposent d'un espace suffisant où croître.
Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s'il n'en est pas un, et de le placer loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d'être fragmentées.
FMR

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *