Comment modifier récursivement les autorisations de fichiers sous Linux

0
Publicité

Étant donné que Linux est un système d’exploitation multi-utilisateurs, il dispose d’un mécanisme qui définit et gère les autorisations de fichiers pour garantir que seuls les processus et les utilisateurs autorisés peuvent accéder à divers répertoires et fichiers. Lorsque vous utilisez Linux, vous pouvez rencontrer diverses instances dans lesquelles vous ne pouvez pas modifier des fichiers ou des répertoires en raison de l’erreur « Autorisation refusée », indiquant que vous ne disposez pas des privilèges requis. Ce didacticiel vous montrera comment modifier de manière récursive les autorisations de fichiers sous Linux pour vous assurer que vos paramètres d’autorisation s’appliquent aux sous-dossiers et aux fichiers.

Comment vérifier les autorisations de fichier sous Linux

Lorsque l’erreur « autorisation refusée » se produit sur un fichier ou une opération de répertoire, commencez par vérifier les autorisations allouées pour l’utilisateur, le groupe et les autres.

Pour ce faire, vous pouvez utiliser la commande ls -l. Par exemple, voici les autorisations pour divers fichiers et répertoires dans le répertoire « /var ».

La sortie ci-dessus contient des informations spécifiques.

Publicité
  • La première colonne représente les autorisations de fichier et de répertoire. La première lettre de cette colonne indique le type : d signifie répertoire, l représente un lien symbolique et – un fichier normal.
  • Les neuf autres caractères sont regroupés en trois ensembles : u utilisateur, g groupe et o propriétaire indiquent les autorisations de fichier ou de répertoire. r indique les autorisations « lecture », w indique les autorisations « écriture » ​​et X indique les autorisations « exécution ».

Une fois que vous connaissez les autorisations de fichier de votre répertoire ou fichier de travail, vous pouvez les modifier facilement.

Comment utiliser chmod pour modifier les autorisations de fichiers

La commande chmod est le moyen le plus simple de modifier les autorisations de fichiers sous Linux. La syntaxe générale de la commande est :

chmod { autorisation } { opérateur } { mode }

Autorisation : cela représente les autorisations accordées à un utilisateur, un groupe, un propriétaire ou tous.
Opérateur : ceci indique les autorisations accordées au cessionnaire de l’autorisation : + accorde l’autorisation, – refuse les autorisations et = spécifie les autorisations à définir.
Mode : cela dicte les autorisations à définir : r lire, w écrire ou e exécuter.

Par exemple, pour refuser à tout le monde l’accès en écriture au répertoire de sauvegarde dans le répertoire « /var », vous pouvez utiliser la commande :

sudo chmod -w /var/sauvegardes

Bien que la modification des autorisations de fichier à l’aide de la commande chmod soit efficace, elle ne modifie que les autorisations de fichier pour le répertoire ou le fichier spécifié.

Heureusement, vous pouvez modifier de manière récursive les autorisations de fichier d’un répertoire ou d’un fichier et de ses sous-répertoires et fichiers. Pour ce faire, utilisez l’option -r récursive de la commande chmod .

Par exemple, supprimons récursivement les autorisations read pour le répertoire « /var/backup » et tous ses fichiers et sous-répertoires. Les autorisations actuelles sont :

drwxrwxrwx 2 root root 4096 Jul 15 16:25 sauvegardes

Exécutons maintenant récursivement chmod pour modifier les autorisations :

sudo chmod –r -r /var/sauvegardes

Vous pouvez maintenant voir que les autorisations de fichier ont changé.

Autorisation de modification récursive avec find

En règle générale, vous ne définirez pas de fichiers et de répertoires avec des autorisations similaires. C’est parce que vous avez besoin de l’autorisation d’exécution cd pour accéder à un répertoire spécifique. Cependant, la plupart des fichiers ne nécessitent pas cette autorisation d’exécution.

Pour surmonter cela, vous pouvez utiliser find l’utilitaire sous Linux. Cela vous permet de trouver uniquement des fichiers ou des répertoires spécifiques et de définir des autorisations sur eux.

Prenons le répertoire « /var/log ». Le répertoire contient à la fois des fichiers et des répertoires.

Pour définir des autorisations spécifiques pour les fichiers uniquement, nous pouvons utiliser la commande find avec l’option -type f.

Voir un exemple de commande ci-dessous :

sudo find /var/log/ -type f -exec chmod 777 {} \;

Dans l’exemple ci-dessus, nous avons utilisé la commande find pour rechercher des fichiers dans le répertoire « /var/log », puis défini des autorisations de lecture, d’écriture et d’exécution pour les utilisateurs, les groupes et tous.

On peut aussi faire le même cas pour les répertoires. Dans ce cas, nous spécifions -type d pour obtenir uniquement les répertoires.

Par example:

sudo find /var/log/ -type d -exec chmod 755 {} \;

Dans l’exemple ci-dessus, nous définissons uniquement l’autorisation 755 sur les répertoires et non sur les fichiers et les répertoires.

Vous pouvez le vérifier en utilisant la commande ls -la.

Vous remarquerez que tous les fichiers ont l’autorisation 777, tandis que les répertoires ont 755 autorisations.

Publicité