GNU/Linux >> Tutoriels Linux >  >> Linux

Commande Chmod sous Linux (autorisations de fichiers)

Sous Linux, l'accès aux fichiers est géré via les autorisations, les attributs et la propriété des fichiers. Cela garantit que seuls les utilisateurs et les processus autorisés peuvent accéder aux fichiers et aux répertoires.

Ce tutoriel explique comment utiliser le chmod commande pour modifier les autorisations d'accès des fichiers et des répertoires.

Autorisations de fichier Linux #

Avant d'aller plus loin, expliquons le modèle de base des autorisations Linux.

Sous Linux, chaque fichier est associé à un propriétaire et à un groupe et se voit attribuer des droits d'accès pour trois classes d'utilisateurs différentes :

  • Le propriétaire du fichier.
  • Les membres du groupe.
  • Autres (tous les autres).

La propriété du fichier peut être modifiée à l'aide du chown et chgrp commandes.

Trois types d'autorisations de fichiers s'appliquent à chaque classe :

  • L'autorisation de lecture.
  • L'autorisation d'écriture.
  • L'autorisation d'exécution.

Ce concept vous permet de spécifier quels utilisateurs sont autorisés à lire le fichier, à écrire dans le fichier ou à exécuter le fichier.

Les autorisations de fichiers peuvent être consultées à l'aide de ls commande :

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

Le premier caractère indique le type de fichier. Il peut s'agir d'un fichier normal (- ), répertoire (d ), un lien symbolique (l ), ou tout autre type de fichier spécial.

Les neuf caractères suivants représentent les autorisations de fichier, trois triplets de trois caractères chacun. Le premier triplet affiche les autorisations du propriétaire, le second les autorisations du groupe et le dernier triplet affiche les autorisations de tous les autres. Les autorisations peuvent avoir une signification différente selon le type de fichier.

Dans l'exemple ci-dessus (rw-r--r-- ) signifie que le propriétaire du fichier a les droits de lecture et d'écriture (rw- ), le groupe et les autres n'ont que des autorisations de lecture (r-- ).

Chacun des trois triplets d'autorisation peut être composé des caractères suivants et avoir des effets différents, selon qu'ils sont définis sur un fichier ou sur un répertoire :

Effet des autorisations sur les fichiers

Autorisation Personnage Signification du fichier
Lire - Le fichier n'est pas lisible. Vous ne pouvez pas afficher le contenu du fichier.
r Le fichier est lisible.
Écrire - Le fichier ne peut pas être changé ou modifié.
w Le fichier peut être changé ou modifié.
Exécuter - Le fichier ne peut pas être exécuté.
x Le fichier peut être exécuté.
s Si trouvé dans le user triplet il définit le setuid bit. Si trouvé dans le group triplet, il définit le setgid bit. Cela signifie également que x flag est défini.
Lorsque le setuid ou setgid les drapeaux sont définis sur un fichier exécutable, le fichier est exécuté avec les privilèges du propriétaire et/ou du groupe du fichier.
S Identique aux s mais le x l'indicateur n'est pas défini. Ce drapeau est rarement utilisé sur les fichiers.
t Si trouvé dans les others triplet il définit le sticky bit.
Cela signifie également que x drapeau est défini. Ce drapeau est inutile sur les fichiers.
T Identique à t mais le x l'indicateur n'est pas défini. Ce drapeau est inutile sur les fichiers.

Effet des autorisations sur les répertoires (dossiers)

Sous Linux, les répertoires sont des types spéciaux de fichiers qui contiennent d'autres fichiers et répertoires.

Autorisation Personnage Signification sur Annuaire
Lire - Le contenu du répertoire ne peut pas être affiché.
r Le contenu du répertoire peut être affiché.
(par exemple, vous pouvez lister les fichiers à l'intérieur du répertoire avec ls .)
Écrire - Le contenu du répertoire ne peut pas être modifié.
w Le contenu du répertoire peut être modifié.
(par exemple, vous pouvez créer de nouveaux fichiers, supprimer des fichiers ..etc.)
Exécuter - Le répertoire ne peut pas être modifié.
x Le répertoire peut être parcouru en utilisant cd .
s Si trouvé dans le user triplet, il définit le setuid bit. Si trouvé dans le group triplet il définit le setgid bit. Cela signifie également que x drapeau est défini. Lorsque le setgid est défini sur un répertoire, les nouveaux fichiers créés dans celui-ci héritent de l'ID de groupe de répertoires (GID), au lieu de l'ID de groupe principal de l'utilisateur qui a créé le fichier.
setuid n'a aucun effet sur les répertoires.
S Identique aux s mais le x l'indicateur n'est pas défini. Ce drapeau est inutile sur les répertoires.
t Si trouvé dans les others triplet il définit le sticky bit.
Cela signifie également que x drapeau est défini. Lorsque le sticky bit est défini sur un répertoire, seul le propriétaire du fichier, le propriétaire du répertoire ou l'utilisateur administratif peut supprimer ou renommer les fichiers dans le répertoire.
T Identique à t mais le x l'indicateur n'est pas défini. Ce drapeau est inutile sur les répertoires.

Utiliser chmod #

Le chmod commande prend la forme générale suivante :

chmod [OPTIONS] MODE FILE...

Le chmod La commande vous permet de modifier les autorisations sur un fichier en utilisant soit un mode symbolique ou numérique, soit un fichier de référence. Nous expliquerons les modes plus en détail plus loin dans cet article. La commande peut accepter un ou plusieurs fichiers et/ou répertoires séparés par un espace comme arguments.

Seul root, le propriétaire du fichier ou l'utilisateur disposant des privilèges sudo peut modifier les autorisations d'un fichier. Soyez très prudent lorsque vous utilisez chmod , en particulier lors de la modification récursive des autorisations.

Méthode symbolique (texte) #

La syntaxe du chmod commande lors de l'utilisation du mode symbolique a le format suivant :

chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...

Le premier ensemble de drapeaux ([ugoa…] ), indicateurs d'utilisateurs, définit les classes d'utilisateurs dont les autorisations sur le fichier sont modifiées.

  • u - Le propriétaire du fichier.
  • g - Les utilisateurs qui sont membres du groupe.
  • o - Tous les autres utilisateurs.
  • a - Tous les utilisateurs, identiques à ugo .

Si le drapeau des utilisateurs est omis, celui par défaut est a et les autorisations définies par umaska ​​ne sont pas affectées.

Le deuxième ensemble de drapeaux ([-+=] ), les indicateurs d'opération, définissent si les autorisations doivent être supprimées, ajoutées ou définies :

  • - Supprime les autorisations spécifiées.
  • + Ajoute les autorisations spécifiées.
  • = Remplace les autorisations actuelles par les autorisations spécifiées. Si aucune autorisation n'est spécifiée après le = symbole, toutes les autorisations de la classe d'utilisateurs spécifiée sont supprimées.

Les permissions (perms... ) peut être défini explicitement en utilisant zéro ou une ou plusieurs des lettres suivantes :r , w , x , X , s , et t . Utiliser une seule lettre de l'ensemble u , g , et o lors de la copie des autorisations d'une classe d'utilisateurs à une autre.

Lors de la définition des autorisations pour plusieurs classes d'utilisateurs ([,…] ), utilisez des virgules (sans espaces) pour séparer les modes symboliques.

Voici quelques exemples d'utilisation du chmod commande en mode symbolique :

  • Autorisez les membres du groupe à lire le fichier, mais pas à l'écrire ni à l'exécuter :

    chmod g=r filename
  • Supprimez l'autorisation d'exécution pour tous les utilisateurs :

    chmod a-x filename
  • Supprimez de manière récursive l'autorisation d'écriture pour les autres utilisateurs :

    chmod -R o-w dirname
  • Supprimez les autorisations de lecture, d'écriture et d'exécution pour tous les utilisateurs, à l'exception du propriétaire du fichier :

    chmod og-rwx filename

    La même chose peut également être accomplie en utilisant le formulaire suivant :

    chmod og= filename
  • Accordez des autorisations de lecture, d'écriture et d'exécution au propriétaire du fichier, des autorisations de lecture au groupe du fichier et aucune autorisation à tous les autres utilisateurs :

    chmod u=rwx,g=r,o= filename
  • Ajoutez les autorisations du propriétaire du fichier aux autorisations dont disposent les membres du groupe du fichier :

    chmod g+u filename
  • Ajouter un sticky bit à un répertoire donné :

    chmod o+t dirname

Méthode numérique #

La syntaxe du chmod La commande lors de l'utilisation de la méthode numérique a le format suivant :

chmod [OPTIONS] NUMBER FILE...

Lorsque vous utilisez le mode numérique, vous pouvez définir les autorisations pour les trois classes d'utilisateurs (propriétaire, groupe et tous les autres) en même temps.

Le NUMBER peut être un nombre à 3 ou 4 chiffres.

Lorsqu'un nombre à 3 chiffres est utilisé, le premier chiffre représente les autorisations du propriétaire du fichier, le second le groupe du fichier et le dernier tous les autres utilisateurs.

Chaque autorisation d'écriture, de lecture et d'exécution a la valeur numérique suivante :

  • r (lire) =4
  • w (écrire) =2
  • x (exécuter) =1
  • aucune autorisation =0

Le nombre d'autorisations d'une classe d'utilisateurs spécifique est représenté par la somme des valeurs des autorisations pour ce groupe.

Pour connaître les autorisations du fichier en mode numérique, calculez simplement les totaux pour toutes les classes d'utilisateurs. Par exemple, pour accorder des autorisations de lecture, d'écriture et d'exécution au propriétaire du fichier, des autorisations de lecture et d'exécution au groupe du fichier et des autorisations de lecture uniquement à tous les autres utilisateurs, procédez comme suit :

  • Propriétaire :rwx=4+2+1=7
  • Groupe :r-x=4+0+1=5
  • Autres :r-x=4+0+0=4

En utilisant la méthode ci-dessus, nous arrivons au nombre 754 , qui représente les autorisations souhaitées.

Pour configurer le setuid , setgid , et sticky bit les drapeaux utilisent un nombre à quatre chiffres.

Lorsque le nombre à 4 chiffres est utilisé, le premier chiffre a la signification suivante :

  • setuid=4
  • setgid=2
  • collant=1
  • aucune modification =0

Les trois chiffres suivants ont la même signification que lors de l'utilisation d'un nombre à 3 chiffres.

Si le premier chiffre est 0, il peut être omis et le mode peut être représenté par 3 chiffres. Le mode numérique 0755 est identique à 755 .

Pour calculer le mode numérique vous pouvez aussi utiliser une autre méthode (méthode binaire), mais c'est un peu plus compliqué. Savoir calculer le mode numérique en utilisant 4, 2 et 1 est suffisant pour la plupart des utilisateurs.

Vous pouvez vérifier les autorisations du fichier dans la notation numérique en utilisant le stat commande :

stat -c "%a" filename
644

Voici quelques exemples d'utilisation du chmod commande en mode numérique :

  • Accordez au propriétaire du fichier des autorisations de lecture et d'écriture et uniquement des autorisations de lecture aux membres du groupe et à tous les autres utilisateurs :

    chmod 644 dirname
  • Accordez au propriétaire du fichier des autorisations de lecture, d'écriture et d'exécution, des autorisations de lecture et d'exécution aux membres du groupe et aucune autorisation à tous les autres utilisateurs :

    chmod 750 dirname
  • Accordez des autorisations de lecture, d'écriture et d'exécution, ainsi qu'un sticky bit à un répertoire donné :

    chmod 1777 dirname
  • Définissez de manière récursive des autorisations de lecture, d'écriture et d'exécution pour le propriétaire du fichier et aucune autorisation pour tous les autres utilisateurs sur un répertoire donné :

    chmod -R 700 dirname

Utiliser un numéro de fichier de référence

Le --reference=ref_file L'option vous permet de définir les autorisations du fichier pour qu'elles soient identiques à celles du fichier de référence spécifié (ref_file ).

chmod --reference=REF_FILE FILE

Par exemple, la commande suivante attribuera les permissions du file1 vers file2

chmod --reference=file1 file2

Modifier récursivement les autorisations du fichier #

Pour opérer de manière récursive sur tous les fichiers et répertoires sous le répertoire donné, utilisez le -R (--recursive ) :

chmod -R MODE DIRECTORY

Par exemple, pour modifier les autorisations de tous les fichiers et sous-répertoires sous /var/www répertoire vers 755 vous utiliseriez :

chmod -R 755 /var/www

Les liens symboliques ont toujours 777 autorisations.

Par défaut, lors de la modification des autorisations du lien symbolique, chmod modifiera les autorisations sur le fichier vers lequel le lien pointe.

chmod 755 symlink

Il y a de fortes chances qu'au lieu de modifier la propriété de la cible, vous obteniez une erreur "impossible d'accéder au 'lien symbolique' :autorisation refusée".

L'erreur se produit car, par défaut, sur la plupart des distributions Linux, les liens symboliques sont protégés et vous ne pouvez pas opérer sur les fichiers cibles. Cette option est spécifiée dans /proc/sys/fs/protected_symlinks . 1 signifie activé et 0 désactivé. Il est recommandé de ne pas désactiver la protection des liens symboliques.

Modification des autorisations de fichiers en masse #

Parfois, il y a des situations où vous auriez besoin de modifier en masse les autorisations de fichiers et de répertoires.

Le scénario le plus courant consiste à modifier de manière récursive les autorisations du fichier du site Web en 644 et les autorisations du répertoire à 755 .

En utilisant la méthode numérique :

find /var/www/my_website -type d -exec chmod 755 {} \;find /var/www/my_website -type f -exec chmod 644 {} \;

En utilisant la méthode symbolique :

find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;find /var/www/my_website -type f -exec chmod u=rw,go=r {} \;

Le find La commande recherchera les fichiers et les répertoires sous /var/www/my_website et passez chaque fichier et répertoire trouvé au chmod commande pour définir les autorisations.

Conclusion #

Le chmod La commande modifie les autorisations du fichier. Les autorisations peuvent être définies en mode symbolique ou numérique.

Pour en savoir plus sur chmod visitez la page de manuel de chmod.

Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.


Linux
  1. Bases des autorisations de fichiers Linux

  2. Autorisations Linux :une introduction à chmod

  3. Commande wc Linux

  4. Commande grep Linux

  5. Commande Linux chmod

Commande Gzip sous Linux

Commande Gunzip sous Linux

Commande Stat sous Linux

Commande Chmod sous Linux

Commande Chmod - Comment modifier les autorisations de fichiers sous Linux

Exemples de commandes Linux chmod