GNU/Linux >> Tutoriels Linux >  >> Linux

Exemples de commande chattr pour modifier les attributs de fichier (rendre les fichiers immuables)

Les fichiers peuvent également avoir des attributs qui sont exprimés d'une autre manière que les autorisations que nous avons vues jusqu'à présent. Un exemple de ceci rend un fichier immuable (un mot fantaisiste, qui signifie qu'il ne peut pas être modifié). Un fichier immuable a toujours la propriété normale et les autorisations de groupe et RWX, mais il ne permettra pas à l'utilisateur de le modifier, même s'il contient l'autorisation d'écriture. Une autre caractéristique de ceci est que le fichier ne peut pas être renommé.

Dans cet article, nous allons discuter de la façon d'utiliser la commande chattr pour modifier les attributs de fichier sous Linux et rendre les fichiers importants immuables. chattr signifie Changer d'attribut. La commande chattr est un outil très utile sous Linux et est utilisée pour modifier les attributs de fichier. Immuable signifie qu'une fois que j'ai défini l'attribut d'un fichier à l'aide de la commande chattr, vous ne pourrez plus déplacer le fichier, supprimer le fichier, créer un lien du fichier ou modifier le fichier même si vous disposez d'un accès complet à ce fichier. l'utilisateur root ne peut pas non plus apporter de modifications à ce fichier tant que l'attribut n'est pas appliqué. vous pouvez utiliser la commande chattr pour définir et supprimer les attributs du fichier. l'utilisateur root n'a accès qu'aux attributs définis ou non définis des fichiers et des répertoires à l'aide de la commande chattr.

Voyons donc quelques exemples de commande chattr pour modifier les attributs de fichier :

Définir l'attribut "i" sur un fichier

Supposons que j'ai un fichier nommé geek.txt accessible à tous, cela signifie que n'importe quel utilisateur peut venir supprimer, déplacer ou modifier ce fichier. Reportez-vous à la sortie ci-dessous.

# ls -l geek.txt 
-rwxrwxrwx. 1 root root 0 Apr 24 03:59 geek.txt     # Everyone has full access to "geek.txt"
# rm geek.txt    # I am able to delete the file
rm: remove regular empty file `geek.txt'? y

Maintenant, définissons l'attribut sur le fichier geek.txt à l'aide de la commande chattr. Pour définir l'attribut, nous devons utiliser le signe "+" et pour supprimer l'attribut, nous devons utiliser le signe "-".

# chattr +i geek.txt       # Setting Attribute to a file

Où,
je – Signifie Immuable.

Vous pouvez également utiliser -V option pour vérifier la sortie détaillée lors de la définition de l'attribut sur un fichier.

# chattr -V +i geek.txt     # Setting attribute to a file with -V
chattr 1.41.12 (17-May-2010)
Flags of geek.txt set as ----i--------e-

Nous avons donc défini l'attribut sur le fichier geek.txt. pour confirmer la même chose, vous pouvez utiliser la commande lsattr. Reportez-vous à l'exemple de sortie ci-dessous. Vous remarquerez un i (surligné en rouge) dans la section des autorisations du fichier.

# lsattr geek.txt    # confirm if attribute set or not
----i--------e- geek.txt

Essayons maintenant de supprimer, supprimer, déplacer et modifier l'autorisation du fichier et je suis sûr que vous ne pouvez rien faire de tout cela.

1. Supprimez le fichier :

# rm geek.txt        # Removing the File
rm: remove regular empty file `geek.txt'? y
rm: cannot remove `geek.txt': Operation not permitted
# You can also try to remove the file forcefully.
# rm -rf geek.txt  # Removing the file forcefully
rm: cannot remove `geek.txt': Operation not permitted

2. Déplacez le fichier :

# mv geek.txt test.txt        # Move the file
mv: cannot move `geek.txt' to `test.txt': Operation not permitted

3. Modifiez le fichier :

# cat >> geek.txt 
bash: geek.txt: Permission denied

4. Modifier l'autorisation du fichier :

# chmod 755 geek.txt 
chmod: changing permissions of `geek.txt': Operation not permitted

Comme vous pouvez le voir sur tous les exemples ci-dessus, nous ne pouvons apporter aucune modification à ce fichier.

Suppression de l'attribut -i (immuable) des fichiers

Pour supprimer l'attribut "i", utilisez la commande ci-dessous.

# chattr -i geek.txt    # Unset "i" attribute

Après avoir supprimé l'attribut, vous verrez que la section d'autorisation deviendra vide.

# lsattr geek.txt     
--------------- geek.txt

Rendre un répertoire immuable à l'aide de chattr

Essayons maintenant de sécuriser un répertoire en modifiant son attribut de manière récursive à l'aide de la commande chattr. Ici, j'ai un répertoire nommé data et tout le monde a un accès complet à ce répertoire de manière récursive. Reportez-vous à l'exemple de sortie ci-dessous.

# mkdir data
# chmod -R 777 data/
# ls -l
total 4
drwxrwxrwx. 2 root root 4096 Apr 24 04:25 data

Définissez maintenant l'attribut sur ce répertoire.

# chattr +i data/
# lsattr 
----i--------e- ./data

Vous pouvez également définir l'attribut de manière récursive en utilisant l'option -R avec chattr.

# chattr -R +i data/

Après avoir défini l'attribut sur le répertoire, essayez maintenant de supprimer, déplacer ou créer un fichier, je suis sûr que vous ne serez pas autorisé à faire quoi que ce soit de cela. Reportez-vous à l'exemple de sortie ci-dessous.

# rmdir data/        # Deleting the Directory
rmdir: failed to remove `data/': Operation not permitted
# rm -rf data/        # Deletiing the Directory Forcefully
rm: cannot remove `data': Operation not permitted
# mv data/ mydata       # Moving the Directory
mv: cannot move `data/' to `mydata': Operation not permitted
# cd data/
# cat > test.txt       # Creating a File in the directory
bash: test.txt: Permission denied

Où pouvons-nous réellement utiliser la commande chattr ?

Prenons un exemple :en tant qu'administrateur Linux, vous ne voulez évidemment pas que quiconque accède à vos fichiers de configuration, apporte des modifications à des fichiers, supprime des fichiers de configuration ou en fasse un usage abusif. Il est de votre responsabilité de le sécuriser et de le protéger des mauvaises mains qui n'ont pas l'autorisation d'y accéder. Nous pouvons sécuriser tous nos éléments de configuration en utilisant la commande chattr.

Sous Linux, tous les fichiers de configuration sont stockés dans le répertoire /etc. Si nous définissons l'attribut sur le répertoire /etc, personne ne pourra accéder à aucune de vos configurations. Alors allons-y.

# chattr +i /etc/     # Setting attribute to /etc directory

Essayons maintenant d'effectuer quelques tâches :

Exemples : 1 Créer un groupe

# groupadd g5
groupadd: cannot lock /etc/group; try again later.

Exemple :2 Définir un mot de passe pour n'importe quel utilisateur

# passwd michelle
Changing password for user michelle.
New password: 
Retype new password: 
passwd: Authentication token manipulation error

Exemple :3 Créer un nouvel utilisateur

# useradd thegeekdiary
useradd: cannot lock /etc/passwd; try again later.

Comme vous pouvez le voir ci-dessus, nous ne pouvons pas effectuer certaines tâches telles que créer un nouvel utilisateur, définir un mot de passe pour n'importe quel utilisateur, créer un nouveau groupe. nous ne pouvons pas effectuer toutes ces tâches car lorsque nous créons un nouvel utilisateur ou définissons un mot de passe pour un utilisateur, il met à jour le fichier /etc/passwd et le fichier /etc/shadow, ce qui n'est pas possible ici car nous définissons l'attribut pour le répertoire /etc complet.

Remarque :Ici, j'ai défini des attributs pour compléter le répertoire /etc pour vous expliquer simplement à titre d'exemple. Mais vous pouvez définir des attributs de fichier selon vos besoins, par exemple si vous souhaitez uniquement contrôler la gestion des utilisateurs et des groupes, vous n'avez pas besoin de définir l'attribut pour le répertoire /etc complet, vous ne pouvez définir que pour /etc/passwd et /etc/shadow et pour les groupes, définissez l'attribut pour /etc/group. Si vous souhaitez contrôler la table du système de fichiers, définissez l'attribut pour /etc/fstab et ainsi de suite.

Prenons maintenant un autre exemple et démontons un système de fichiers. Reportez-vous à l'exemple de sortie ci-dessous.

Exemple :4 Démonter un système de fichiers

# umount /media/       # Unmounting a File System
can't create lock file /etc/mtab~2762: Permission denied (use -n flag to override)

Nous sommes également incapables de démonter un système de fichiers. Pour effectuer toutes les tâches ci-dessus, nous devons supprimer les attributs que nous avons appliqués pour le répertoire /etc.

Désactiver l'attribut à l'aide de la commande chattr

Nous pouvons supprimer l'attribut en utilisant la commande chattr avec l'option -i.

# chattr -Vi /etc/         # Removing Attributes from directory
chattr 1.41.12 (17-May-2010)
Flags of /etc/ set as ----------I--e-

Autoriser l'ajout d'un fichier à l'aide de la commande chattr

Vous pouvez autoriser un fichier à ajouter des données à l'aide de la commande chattr avec l'option +a. En appliquant cet attribut, vous êtes uniquement autorisé à écrire des données sur ce fichier et non autorisé à supprimer et déplacer.

Ici, j'autorise les utilisateurs à ajouter des données sur le fichier geekdiary.txt.

# chattr +a thegeekdiary.txt         # Setting +a Attribute

Pour vérifier l'attribut appliqué, utilisez la commande ci-dessous. Vous remarquerez une section d'autorisation.

# lsattr thegeekdiary.txt 
-----a-------e- thegeekdiary.txt

Comme vous pouvez le voir ci-dessous, nous pouvons voir le contenu du fichier.

# cat thegeekdiary.txt 
Welcome to thegeekdiary.com

Essayons maintenant d'ajouter des données dans le fichier.

# cat >> thegeekdiary.txt      # Writing some data
Here you will get Linux Tutorials

# Confirmez maintenant la même chose en utilisant la commande cat

# cat thegeekdiary.txt 
Welcome to thegeekdiary.com
Here you will get Linux Tutorials

Nous pouvons donc ajouter avec succès des données dans thegeekdiary.txt. Essayons maintenant de supprimer le fichier.

# rm thegeekdiary.txt        # Deleting the File
rm: remove regular file `thegeekdiary.txt'? y
rm: cannot remove `thegeekdiary.txt': Operation not permitted
# rm -rf thegeekdiary.txt        # Deleting the File Forcefully
rm: cannot remove `thegeekdiary.txt': Operation not permitted

Pour plus d'informations sur la commande chattr, vous pouvez utiliser les commandes ci-dessous sur votre système Linux.

# man chattr
# man lsattr

Jetez un coup d'œil à quelques options utiles de la commande chattr :

  • +i – Un fichier avec l'attribut +i ne peut pas être supprimé, déplacé, renommé. bref non modifiable.
  • -i – Cette option permet de supprimer l'attribut i du fichier.
  • -V – Pour voir la sortie Verbose
  • -a – L'utilisation de cet attribut permettra uniquement d'ajouter des données sur un fichier et ne pourra pas être supprimée ou déplacée.


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

  2. commande chattr sous Linux avec des exemples

  3. Commande mv sous Linux :7 exemples essentiels

  4. 5 exemples de commandes tactiles Linux (comment modifier l'horodatage des fichiers)

  5. 10 exemples de commandes Cat pour gérer des fichiers sous Linux / UNIX

Commande Chattr sous Linux (attributs de fichier)

Commande lsof sous Linux (10 exemples)

Commande Touch sous Linux (5 exemples)

Commande Linux WC avec exemples

Commande Stat :Afficher les attributs des fichiers et des répertoires

Linux make Commande avec des exemples