Android

Commande chmod sous linux (autorisations de fichiers)

Linux #12 - Les droits sur les fichiers : chmod chown chgrp

Linux #12 - Les droits sur les fichiers : chmod chown chgrp

Table des matières:

Anonim

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 processus autorisés peuvent accéder aux fichiers et aux répertoires.

Ce didacticiel explique comment utiliser la commande chmod pour modifier les autorisations d'accès aux fichiers et aux répertoires.

Autorisations de fichiers 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 affecté avec des droits d'accès d'autorisation pour trois classes d'utilisateurs différentes:

  • Le propriétaire du fichier, les membres du groupe, les autres (tout le monde).

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

Il existe trois types d'autorisations de fichiers qui 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 la commande ls :

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 ( - ), d'un répertoire ( d ), d'un lien symbolique ( l ) ou de tout autre type spécial de fichier.

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 un groupe d'autorisations 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 rw-r--r-- dessus ( rw-r--r-- ) signifie que le propriétaire du fichier a des autorisations 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 constitué 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 dans le dossier
Lis - 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 S'il est trouvé dans le triplet user il définit le bit setuid . S'il est trouvé dans le triplet de group , il définit le bit setgid . Cela signifie également que le drapeau x est défini.

Lorsque les indicateurs setuid ou setgid sont définis sur un fichier exécutable, le fichier est exécuté avec les privilèges de propriétaire et / ou de groupe du fichier.

S Identique à s mais le drapeau x n'est pas défini. Ce drapeau est rarement utilisé sur les fichiers.
t S'il est trouvé dans les others triplets, il définit le bit sticky .

Cela signifie également que le drapeau x est défini. Ce drapeau est inutile sur les fichiers.

T Identique à t mais le drapeau x 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 le répertoire
Lis - 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 dans le 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 ne pouvez pas créer de nouveaux fichiers, supprimer des fichiers..etc.)

Exécuter - Le répertoire ne peut pas être changé en.
x Le répertoire peut être parcouru à l'aide de cd .
s S'il est trouvé dans le triplet user , il définit le bit setuid . S'il est trouvé dans le triplet de group il définit le bit setgid . Cela signifie également que le drapeau x est défini. Lorsque l'indicateur 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 à s mais le drapeau x n'est pas défini. Ce drapeau est inutile sur les répertoires.
t S'il est trouvé dans les others triplets, il définit le bit sticky .

Cela signifie également que le drapeau x est défini. Lorsque le bit collant 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 drapeau x n'est pas défini. Ce drapeau est inutile sur les répertoires.

Utiliser chmod

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

chmod MODE FILE…

La commande chmod vous permet de modifier les autorisations sur un fichier à l'aide d'un mode symbolique ou numérique ou d'un fichier de référence. Nous expliquerons les modes plus en détail ultérieurement. 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 extrêmement prudent lorsque vous utilisez chmod , en particulier lorsque vous modifiez récursivement les autorisations.

Méthode symbolique (texte)

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

chmod perms… FILE…

Le premier ensemble de drapeaux ( ), drapeaux 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 membres du groupe. o - Tous les autres utilisateurs. a - Tous les utilisateurs, identiques à ugo .

Si l'indicateur d'utilisateurs est omis, celui par défaut est a et les autorisations définies par umask ne sont pas affectées.

Le deuxième ensemble de drapeaux ( ), les indicateurs d'opération, définit 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 autorisations ( perms… ) peuvent être définies explicitement en utilisant zéro ou une ou plusieurs des lettres suivantes: r , w , x , X , s et t . Utilisez 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 de la commande chmod en mode symbolique:

  • Accordez aux membres du groupe l'autorisation de lire le fichier, mais pas de l'écrire et de l'exécuter:

    chmod g=r filename

    Supprimez l'autorisation d'exécution pour tous les utilisateurs:

    chmod ax filename

    Supprimez de façon répulsive l'autorisation d'écriture pour les autres utilisateurs:

    chmod -R ow dirname

    Supprimez l'autorisation 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 de propriétaire du fichier aux autorisations dont disposent les membres du groupe du fichier:

    chmod g+u filename

    Ajoutez un bit collant à un répertoire donné:

    chmod o+t dirname

Méthode numérique

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

chmod 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 toutes les autres) en même temps.

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

Lorsqu'un numéro à 3 chiffres est utilisé, le premier chiffre représente les autorisations du propriétaire du fichier, le second du 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 (lecture) = 4 w (écriture) = 2 x (exécution) = 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 uniquement des autorisations de lecture à tous les autres utilisateurs, procédez comme suit:

  • Propriétaire: rwx = 4 + 2 + 1 = 7 Groupe: rx = 4 + 0 + 1 = 5 Autres: rx = 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 les indicateurs setuid , setgid et sticky bit utilisez un nombre à quatre chiffres.

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

  • setuid = 4setgid = 2sticky = 1no changes = 0

Les trois chiffres suivants ont la même signification que lorsque vous utilisez un numéro à 3 chiffres.

Si le premier chiffre est 0, il peut être omis et le mode peut être représenté avec 3 chiffres. Le mode numérique 0755 est le même que 755 .

Pour calculer le mode numérique, vous pouvez également utiliser une autre méthode (méthode binaire), mais c'est un peu plus compliqué. Savoir comment 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 à l'aide de la commande stat :

stat -c "%a" filename

644

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

  • Accordez des autorisations de lecture et d'écriture au propriétaire du fichier et n'autorisez la lecture qu'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, de lecture et d'exécution sur les membres du groupe et aucune autorisation à tous les autres utilisateurs:

    chmod 750 dirname

    Donnez des autorisations de lecture, d'écriture et d'exécution, ainsi qu'un petit peu à un répertoire donné:

    chmod 1777 dirname

    Définissez récursivement des autorisations de lecture, d'écriture et d'exécution sur le propriétaire du fichier et aucune autorisation pour tous les autres utilisateurs sur un répertoire donné:

    chmod -R 700 dirname

Utilisation d'un fichier de référence

L'option --reference=ref_file 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 autorisations du file1 au file2

chmod --reference=file1 file2

Modifier récursivement les autorisations du fichier

Pour opérer récursivement sur tous les fichiers et répertoires sous le répertoire donné, utilisez l'option -R ( --recursive ):

chmod -R MODE DIRECTORY

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

chmod -R 755 /var/www

Fonctionnement sur des liens symboliques

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 est probable qu'au lieu de changer la propriété cible, vous obtiendrez 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 existe des situations où vous devrez modifier en bloc les autorisations de fichiers et de répertoires.

Le scénario le plus courant consiste à modifier récursivement les autorisations du fichier de site Web en 644 et celles du répertoire en 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 {} ;

La commande find recherchera les fichiers et les répertoires sous /var/www/my_website et passera chaque fichier et répertoire trouvés à la commande chmod pour définir les autorisations.

Conclusion

La commande chmod modifie les autorisations du fichier. Les autorisations peuvent être définies à l'aide du mode symbolique ou numérique.

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

terminal chmod