GNU/Linux >> Tutoriels Linux >  >> Linux

Concepts d'autorisation de fichiers Linux

Cet article explore les concepts de base des autorisations de fichiers Linux®. Il commence par les bases et passe à des sujets plus avancés. Il fournit également quelques exemples pratiques. Pour obtenir une introduction aux autorisations de fichiers et apprendre à afficher les autorisations de fichiers, consultez Vérifier les autorisations de fichiers Linux avec ls.

Accès aux fichiers

Dans un environnement multi-utilisateurs comme Linux, il est important de contrôler quels utilisateurs peuvent modifier ou supprimer divers fichiers sur le système. Ce contrôle n'est pas seulement une mesure de sécurité nécessaire, il prévient les accidents catastrophiques. Si un utilisateur ne peut affecter qu'un nombre minimum de fichiers, il y a moins de chances qu'une commande mal saisie ou une faute de frappe dans un script détruise un fichier essentiel ou publie des informations confidentielles sur un site Web public.

Avant d'explorer comment Pour gérer l'accès aux fichiers, vous devez d'abord comprendre les concepts de propriété et d'autorisations de fichiers. Notez que la propriété et les permissions s'appliquent également aux répertoires car les répertoires sont fondamentalement un type de fichier spécial en ce qui concerne le système de fichiers. Même s'il existe certaines différences pour les répertoires, les concepts de base sont les mêmes, de sorte que la plupart des concepts ou commandes d'autorisation de fichier abordés dans cet article s'appliquent également aux répertoires.

Les bases de la propriété

Chaque fichier et répertoire d'un système de fichiers Linux a un propriétaire. Le propriétaire d'un fichier peut attribuer des autorisations pour le fichier. Si l'utilisateur mom123 est propriétaire du fichierlawndarts , vous avez besoin de l'autorisation de mom123 jouer avec lawndarts . Elle peut vous donner accès, vous refuser complètement l'accès ou simplement vous laisser regarder lawndarts sans avoir à jouer avec.

L'utilisateur qui possède un fichier peut définir ou modifier ses autorisations, en déterminant qui (y compris même le propriétaire) peut lire le fichier, l'exécuter, le modifier ou le supprimer. C'est un simple privilège, mais il a un impact considérable.

Groupe de fichiers

Alors que chaque fichier a un utilisateur qui le possède et peut contrôler ses autorisations, chaque fichier appartient également à un groupe . Un groupe décrit un ensemble d'utilisateurs qui partagent des autorisations de fichiers qui peuvent être différentes de l'utilisateur type. Un utilisateur peut appartenir à plusieurs groupes, mais un fichier ne peut appartenir qu'à un seul groupe.

La propriété de groupe est un moyen pratique de permettre à un propriétaire de fichier d'attribuer un ensemble d'autorisations à un fichier pour des personnes qu'il ne connaît pas ("Vous pouvez regarder, mais vous ne pouvez pas toucher") et un autre ensemble d'autorisations pour les personnes en qui il a confiance avec le fichier ("Vous pouvez regarder et toucher. Mais personne d'autre ne le peut.").

Changement de propriétaire

Un utilisateur typique peut contrôler les autorisations d'un fichier mais ne peut pas en attribuer la propriété à un autre utilisateur. Pour changer de propriétaire, vous devez utiliser le superutilisateur, communément appelé root .

Si vous n'êtes pas connecté en tant que root , vous devez utiliser le sudo commande pour utiliser rootprivileges pour changer le propriétaire d'un fichier.

Le système de fichiers est plus flexible pour changer le groupe d'un fichier. Vous pouvez toujours utiliser les privilèges root pour changer de groupe, mais si le propriétaire du fichier appartient au groupe cible, le propriétaire du fichier peut également basculer un fichier vers le groupe cible.

La commande chown

La commande principale utilisée pour changer le propriétaire ou le groupe d'un fichier est chown . La syntaxe la plus courante utilisée avec chown est illustré dans l'exemple suivant :

chown user:group file1 file2 file3

L'user dans l'exemple précédent est l'utilisateur auquel vous souhaitez attribuer le fichier, et le group est le groupe auquel vous voulez que le fichier appartienne. Un deux-points sépare les deux éléments de la commande. Après la paire utilisateur et groupe, vous répertoriez un ou plusieurs fichiers concernés par la modification.

Remarque :chown accepte également un point à la place des deux-points lors de la séparation des noms d'utilisateur et de groupe. L'utilisation de la période est obsolète mais toujours prise en charge, et vous pouvez la voir dans d'anciens scripts ou de la documentation. Vous devez utiliser les deux-points, si possible.

Vous pouvez omettre l'utilisateur ou le groupe, mais pas les deux. Si vous souhaitez modifier uniquement le propriétaire d'un fichier, vous pouvez utiliser la syntaxe suivante :

chown user file1

Si votre nom d'utilisateur comprend un point et que vous ne souhaitez pas modifier le groupe, incluez les deux-points après l'utilisateur, comme illustré dans l'exemple suivant :

chown john.smith: file1

Si vous voulez utiliser chown pour changer simplement le groupe, assurez-vous d'inclure les deux-points avant le nom du groupe, même si vous ne spécifierez pas d'utilisateur comme indiqué dans l'exemple suivant :

chown :group file1
La commande chgrp

Si vous préférez ne pas utiliser les deux-points lorsque vous souhaitez simplement modifier le groupe pour un fichier, vous pouvez utiliser chgrp comme illustré dans l'exemple suivant :

chgrp group file1

Cela fonctionne exactement comme chown :group file1 , mais il est plus facile à taper et à lire.

L'option -R

Si vous voulez changer le propriétaire d'un répertoire particulier et de ses fichiers et sous-répertoires, utilisez le -R possibilité d'effectuer une modification récursive comme indiqué dans l'exemple suivant :

chown -R user:group directoryname

Le -R l'option fonctionne avec chgrp aussi bien. Avec les deux commandes, la modification s'applique d'abord au répertoire parent, puis parcourt tout ce qui se trouve à l'intérieur du répertoire (y compris les sous-répertoires).

Les liens symboliques (symlinks) nécessitent un traitement spécial pour chown ou chgrp opérations. Un lien symbolique est un alias pour un autre fichier, semblable à un raccourci dans Microsoft® Windows®. Plutôt que d'appliquer la modification au lien symbolique lui-même, le système de fichiers applique la modification à la cible du lien symbolique. Ainsi, si le lien symbolique link pointe vers le fichier thefile.txt , considérez la commande suivante :

chown user:group link

Lorsque cette commande s'exécute, le système modifie le propriétaire et le groupe du fichier cible thefile.txt . La propriété du lien symbolique, lien reste inchangé.

Si vous voulez changer le propriétaire ou le groupe d'un lien symbolique, utilisez le -h drapeau pourchown et chgrp , comme illustré dans l'exemple suivant :

chown -h user:group link

Bases sur les autorisations

Il y a deux parties dans les autorisations :ce que quelqu'un est autorisé à faire avec un fichier et qui quelqu'un peut être.

Ce qui est autorisé

Il existe trois catégories d'actions utilisateur pour les fichiers et les répertoires :lire, écrire et exécuter.

Lire

L'autorisation de lecture pour un fichier contrôle qui peut ouvrir ou afficher le contenu d'un fichier.

L'autorisation de lecture pour un répertoire contrôle si vous pouvez ou non voir une liste des fichiers dans le répertoire, cependant, l'autorisation de lecture n'est pas suffisante. Vous avez également besoin d'une autorisation d'exécution pour que le répertoire puisse voir la liste des fichiers.

Écrire

L'autorisation d'écriture pour un fichier contrôle si vous pouvez ou non modifier le contenu du fichier.

L'autorisation d'écriture pour un répertoire contrôle si vous pouvez ou non ajouter, supprimer ou renommer des fichiers dans ce répertoire. Pour exercer vos autorisations d'écriture dans un répertoire, vous avez également besoin d'une autorisation d'exécution pour le répertoire.

Remarque :Seule la permission d'écriture sur le répertoire englobant affecte si vous pouvez ou non renommer ou supprimer un fichier. Certaines opérations, comme rm , effectuez une vérification et vous empêchez de supprimer un fichier qui ne vous appartient pas. Rien n'empêche un autre programme qui n'a pas une vérification similaire intégrée de supprimer un fichier dans lequel vous ne pouvez pas écrire et que vous ne possédez pas.

Exécuter

L'autorisation d'exécution pour un fichier vous permet d'exécuter ce fichier à partir de la ligne de commande. Pour exécuter n'importe quelle commande (chown , ls , rm , etc.), vous devez avoir l'autorisation d'exécution pour le fichier représentant cette commande. Si vous essayez d'exécuter une commande et obtenez une permission denied erreur, vous n'avez pas l'autorisation d'exécution.

La permission d'exécution pour un répertoire vous permet d'effectuer une opération dans ce répertoire ou de changer votre répertoire de travail (cd ) dans ce répertoire.

Même si vous avez l'autorisation de lecture pour un répertoire, vous ne pouvez pas réellement exécuter le ls dans ce répertoire pour voir la liste des fichiers, sauf si vous disposez également de l'autorisation d'exécution. Sinon, lorsque vous essayez d'exécuter ls , vous êtes bloqué avant que le système ne puisse même vérifier l'autorisation de lecture. Pour affecter quoi que ce soit à l'intérieur d'un répertoire, vous devez avoir l'autorisation d'exécution pour le répertoire.

Qui peut faire quoi

Maintenant que vous savez quelles autorisations sont disponibles, considérez les catégories utilisées pour contrôler qui est affecté par ces autorisations. Les catégories sont utilisateur, groupe et autre.

La catégorie d'utilisateurs

L'utilisateur la catégorie d'autorisation fait référence aux autorisations qui s'appliquent au propriétaire du fichier. C'est la seule catégorie qui cible spécifiquement un seul utilisateur, car un seul utilisateur peut être propriétaire du fichier.

La catégorie de groupe

Le groupe la catégorie fait référence aux utilisateurs qui se trouvent dans le même groupe que le fichier. Si le fichier est dans le groupe devs , et que le fichier dispose d'une autorisation d'écriture pour son groupe, cela signifierait que les utilisateurs de devs groupe ont un accès en écriture au fichier.

L'autre catégorie

L'autre La catégorie est un fourre-tout pour tous ceux qui ne relèvent pas des catégories d'utilisateurs ou de groupes. Vous utilisez cette catégorie pour déterminer si d'autres utilisateurs peuvent lire le fichier, le modifier ou l'exécuter en tant que commande.

Priorité de la catégorie

Il est important de noter que les catégories d'autorisation sont appliquées dans l'ordre utilisateur, groupe, autre. La première catégorie d'autorisation que le système trouve pour un utilisateur est la seule à s'appliquer. Si vous êtes le propriétaire du fichier, vos autorisations sont celles qui sont définies pour l'utilisateur, de sorte que le système ne se souciera pas de vérifier le groupe ou d'autres autorisations pour le fichier - il a déjà trouvé ce qu'il va utiliser.

Ce concept est important car si vous définissez une autorisation pour autre, cette autorisation n'est pas appliquée au propriétaire du fichier ni à quiconque dans le groupe de ce fichier. Ces utilisateurs obtiennent respectivement les autorisations définies dans les catégories d'utilisateurs ou de groupes.

Si vous ne définissez pas d'autorisation de lecture sur un fichier pour la catégorie de groupe, mais que vous la définissez pour l'utilisateur et d'autres catégories, les utilisateurs du groupe du fichier n'ont pas accès en lecture, mais tous les autres l'ont.

Autorisations plus utilisateurs

La combinaison de la propriété, des catégories d'utilisateurs et des autorisations offre de nombreuses options pour contrôler l'accès aux fichiers et aux répertoires. Les exemples suivants montrent quelques possibilités :

  • Si vous créez un fichier en lecture seule pour l'autre catégorie mais laissez les catégories d'utilisateurs et de groupes y écrire, vous pouvez établir un groupe d'éditeurs pour un fichier tout en permettant aux autres utilisateurs de le lire. Ajoutez simplement les utilisateurs privilégiés au même groupe que le fichier.

  • Si vous définissez une autorisation de lecture pour la catégorie d'utilisateurs et que vous la supprimez du groupe et des autres catégories, vous vous assurez que seul le propriétaire du fichier peut afficher son contenu.

  • Lorsque vous définissez une autorisation d'exécution pour un fichier, vous autorisez son exécution en tant que commande. Si vous souhaitez que seuls des utilisateurs spécifiques puissent exécuter une commande, supprimez l'autorisation d'exécution sur le fichier pour l'autre catégorie.

Les répertoires reçoivent le même traitement. De nombreux répertoires de journaux système sont configurés pour être lus et exécutés uniquement par la catégorie d'utilisateurs (souvent root ) et excluez ces autorisations des autres catégories pour vous assurer que seule une personne disposant d'un accès superutilisateur peut afficher les journaux, quelles que soient les autorisations définies sur les fichiers eux-mêmes.

Pourquoi la racine existe

L'utilisateur racine existe pour fournir l'accès et le contrôle. L'utilisateur racine peut modifier la propriété et les autorisations de n'importe quel fichier ou répertoire du système. Cet utilisateur peut également interagir avec les fichiers et les répertoires comme s'il disposait des autorisations les plus permissives disponibles.

Même si l'utilisateur ne peut pas lire un fichier mais que l'autre catégorie le peut, root peut le lire. De même, si l'utilisateur peut lire le fichier mais pas les autres, root peut toujours lire le fichier. Mais si aucune catégorie n'a l'autorisation de lecture (ni utilisateur, ni groupe, ni autre), alors root ne peut pas non plus lire le fichier.

Ce comportement est particulièrement utile pour les fichiers que vous ne souhaitez pas modifier accidentellement. Si les autorisations d'écriture sont supprimées de toutes les catégories d'un fichier, alors même root ne peut pas modifier le contenu du fichier sans modifier ces autorisations.

Conclusion

Avec une compréhension de base du fonctionnement des autorisations de fichiers sous Linux, vous êtes mieux préparé à protéger les fichiers contre les dommages accidentels ou malveillants. Vous pouvez également garder un œil sur les erreurs causées par des autorisations de fichiers restrictives, telles qu'une application incapable d'écrire dans son journal (en raison du fait qu'elle n'a pas d'autorisation d'écriture pour l'utilisateur propriétaire du processus) ou un serveur Web incapable de servir un fichier html (causé par l'absence d'autorisation de lecture, ou le répertoire n'a pas d'autorisation d'exécution).


Linux
  1. Linux - Tout est un fichier ?

  2. Linux - Autorisation de fichier Exécuter uniquement ?

  3. Lister les membres d'un groupe sous Linux

  4. Exemples de commande "chmod" de base sous Linux

  5. Comment puis-je effacer l'autorisation s sur un répertoire sous Linux ?

Moins de commande sous Linux

Apprendre l'utilisation de la commande chgrp (changer de groupe) sous Linux

Comprendre les autorisations de fichiers Linux

Un gars Windows dans un monde Linux :utilisateurs et autorisations de fichiers

Autorisation de montage CIFS refusée sous Linux - Corrigé !

Comprendre les autorisations de fichiers de base et la propriété sous Linux