GNU/Linux >> Tutoriels Linux >  >> Linux

Autorisations de fichiers Linux :tout ce que vous devez savoir

Linux est un système d'exploitation multi-utilisateurs qui vous permet de configurer plusieurs comptes d'utilisateurs et groupes d'utilisateurs pour accéder au même ordinateur. Comme vous pouvez l'imaginer, cela soulève des problèmes de sécurité. Heureusement, Linux est livré avec de puissants paramètres d'autorisation de fichiers et des options qui empêchent les utilisateurs d'accéder aux éléments confidentiels et sensibles des autres.

Vous pourrez définir différents groupes d'utilisateurs et leur attribuer des autorisations de fichiers supplémentaires. Sans les autorisations appropriées, un utilisateur ou un groupe d'utilisateurs ne pourra pas accéder à vos fichiers et répertoires, ce qui protège toutes vos informations.

Pour cette lecture, nous avons préparé un guide détaillé sur les autorisations de fichiers Linux. À la fin, vous devriez avoir une solide compréhension de la signification de chaque autorisation de fichier et de la manière de protéger vos fichiers et répertoires à l'aide de la fonctionnalité.

Comprendre la propriété des fichiers et les autorisations

Pour comprendre la propriété et les autorisations des fichiers Linux, vous devez d'abord comprendre les "utilisateurs" et les "groupes".

Utilisateur vs. Groupe

Linux vous permet de créer plusieurs « utilisateurs ». Cela aide à séparer les fichiers et les répertoires pour les différentes personnes utilisant l'ordinateur. Chaque utilisateur possède des propriétés spécifiques, notamment un ID utilisateur et un répertoire personnel.

Pour visualiser les différents utilisateurs de votre système, vous pouvez saisir la commande suivante dans votre terminal :

$ cat /etc/passwd

Pour gérer tous les utilisateurs, Linux introduit le concept de « groupes ». Vous pouvez créer un ou deux groupes, puis ajouter tous les utilisateurs du système à un ou plusieurs de ces groupes, ce qui vous permet de les gérer plus facilement.

Vous êtes également autorisé à créer un groupe mais pas à le remplir avec des utilisateurs, auquel cas ce sera un groupe avec zéro utilisateur.

Mais, d'un autre côté, après avoir créé un utilisateur, il est automatiquement associé au "groupe par défaut". Vous pouvez, bien sûr, ajouter l'utilisateur à un autre groupe. Ainsi, un utilisateur peut faire partie de plusieurs groupes.

Pour afficher tous les groupes de votre système, saisissez la commande suivante dans votre terminal :

$ cat /etc/group

Remarque :Après avoir exécuté les deux commandes ci-dessus, vous remarquerez que votre système compte déjà des tonnes d'utilisateurs et de groupes que vous n'avez pas créés. Ce sont tous des utilisateurs et des groupes du système. Ceux-ci sont nécessaires pour exécuter tous les processus d'arrière-plan en toute sécurité.

Propriété des fichiers et octroi des autorisations

Chaque fois qu'un utilisateur crée un nouveau fichier ou répertoire, il appartient à l'utilisateur et au groupe par défaut de l'utilisateur. De plus, chaque fichier ou répertoire ne peut appartenir qu'à un seul utilisateur et à un seul groupe.

Alors, comment laissez-vous d'autres utilisateurs accéder à vos fichiers et à votre répertoire ? C'est ici que vous devez définir les autorisations de fichiers. Tous les fichiers et répertoires ont trois types de classes d'autorisation. Ce sont les suivants :

  • Propriétaire :dans cette classe, les autorisations n'affecteront que le propriétaire du fichier.
  • Groupe :sous cette classe, l'autorisation affectera le groupe propriétaire du fichier. Toutefois, si le propriétaire du fichier appartient à ce groupe, utilisez l'autorisation "utilisateur" au lieu de l'autorisation "groupe".
  • Autre :dans cette classe, les autorisations affecteront tous les autres utilisateurs qui se trouvent sur le système.

Vous pouvez attribuer différentes autorisations à chacune de ces classes pour contrôler quel utilisateur et quel groupe obtiennent quel niveau d'accès à vos fichiers et répertoires. Cela étant dit, examinons les différentes autorisations que vous pouvez attribuer.

Avec Linux, vous avez accès à trois types d'autorisations de fichiers. Ce sont les suivants :

  • Lire :un fichier disposant de l'autorisation de lecture permet aux utilisateurs de voir son contenu. Alors que si un répertoire a l'autorisation de lecture, les utilisateurs ne peuvent voir que le nom des fichiers et des autres répertoires qui y sont stockés.
  • Écrire :un fichier disposant de l'autorisation d'écriture permet aux utilisateurs de modifier le contenu de ce fichier, et même de le supprimer. Alors que, pour les répertoires disposant de l'autorisation d'écriture, les utilisateurs sont autorisés à modifier les fichiers et répertoires qui y sont stockés, ainsi qu'à créer de nouveaux fichiers et répertoires.

Remarque :L'autorisation d'écriture n'a aucun effet sur un répertoire, sauf si l'autorisation d'exécution est également activée. En effet, le système ne peut récupérer les autorisations d'un dossier que lorsque le bit d'exécution est défini.

  • Exécuter :un fichier n'a besoin que de l'autorisation d'écriture pour qu'un utilisateur puisse l'exécuter. Cependant, l'autorisation de lecture doit également être activée, sinon cela n'affectera pas. Dans le cas d'un répertoire ayant l'autorisation d'exécution, l'utilisateur pourra entrer dans le répertoire (à l'aide de la commande cd) et afficher les métadonnées des fichiers et répertoires qu'il contient.

À présent, vous devriez avoir une compréhension théorique de base du rôle des utilisateurs Linux, des groupes et des concepts de propriété et d'autorisations de fichiers. Donc, avec cela à l'écart, voyons comment nous pouvons les utiliser de manière pratique.

Comment afficher les autorisations de fichiers ?

Vous savez peut-être déjà qu'en utilisant la commande ls, vous obtenez une liste de tous les fichiers dans un répertoire spécifique. Cependant, il ne vous donne aucun détail concernant la sécurité des fichiers. Pour cette information, vous devrez utiliser la commande ls -l.

Cela vous permettra d'exécuter la commande ls avec l'option « longue liste » qui vous donnera des informations détaillées sur chacun des fichiers. Pour cela, vous pouvez soit utiliser la commande suivante :

$ ls -l <path to directory>

Cela vous donnera des informations sur les autorisations de fichier du répertoire donné. Alternativement, si vous souhaitez obtenir les détails des autorisations de fichiers de votre répertoire actuel, vous pouvez entrer cette commande :

$ ls -l

Pour cette lecture, nous utiliserons la commande ls -l sur notre répertoire personnel.

Voyons ce que ces informations signifient.

  1. La première chose à noter est que chaque ligne distincte contient des informations sur les différents fichiers et répertoires situés dans le répertoire à partir duquel vous avez exécuté la commande.
  2. Ensuite, le premier caractère de chacune des lignes commencera soit par un "-" indiquant qu'il s'agit d'un fichier, la lettre "d" signifiant qu'il s'agit d'un répertoire, ou "l" suggérant qu'il s'agit d'un fichier symbolique lien. Dans l'image ci-dessus, nous savons que Desktop est un répertoire car la ligne commence par "d". Cependant, hello world est un fichier car il commence par "-".
  3. Après cela, nous allons obtenir neuf autres caractères qui présenteront une combinaison particulière des trois lettres "r,w,x" et du symbole "-". Ceci est utilisé pour indiquer la permission du fichier ou du répertoire correspondant. Dans une section ultérieure, nous verrons comment vous pouvez lire ces neuf caractères pour comprendre les autorisations de fichiers.
  4. Après cela, il y aura deux autres colonnes. Cela identifiera le propriétaire et le groupe du fichier ou du répertoire. Dans l'exemple ci-dessus, comme vous pouvez le voir, tous les fichiers et répertoires appartiennent au propriétaire "root" et au groupe "root" par défaut.
  5. La colonne suivante vous indiquera la taille du fichier ou du répertoire en octets.
  6. Ensuite, nous avons deux autres colonnes qui afficheront la date et l'heure de la dernière modification du fichier.
  7. Et enfin, la dernière colonne affichera le nom du fichier ou du répertoire.

Comprendre les autorisations de sécurité

Juste après le premier caractère de chaque ligne, les neuf caractères suivants sont utilisés pour afficher les autorisations du fichier ou du répertoire correspondant.

Considérons le répertoire Desktop de l'image ci-dessus. Il a les permissions rwxr-xr-x. Mais qu'est-ce que cela signifie ?

Eh bien, vous devrez d'abord diviser les neuf caractères en trois segments contenant chacun trois caractères. Le premier segment indique l'autorisation pour l'utilisateur, le second indique l'autorisation pour le groupe et le troisième indique l'autorisation pour l'autre.

A ce titre, l'Utilisateur dispose de l'autorisation rwx. Le groupe a la permission r-x.

Et enfin, l'autre a la permission r-x.

Ici, "r" signifie "lire" les autorisations.

Ensuite, "w" indique les autorisations "en écriture".

Ensuite, "x" signifie que vous disposez des autorisations "d'exécution".

Chaque segment va avoir ces permissions disposées dans cet ordre :rwx. Vous ne trouverez pas de séquence comme rxw ou wxr. Si les autorisations de lecture, d'écriture ou d'exécution sont révoquées, vous remarquerez que "-" remplace la lettre correspondante.

De cette connaissance, nous pouvons déduire que sous le répertoire Desktop, l'utilisateur a la permission de lire, d'écrire et d'exécuter. Alors que le groupe et l'autre n'ont que des autorisations de lecture et d'exécution, mais pas d'écriture.

De même, pour le fichier, hello world a les permissions rw-rw-r–. Cela signifie que l'utilisateur et le groupe ont des autorisations de lecture et d'écriture, mais pas d'autorisation d'exécution. Dans le même temps, l'autre n'a qu'une autorisation de lecture, sans autorisation d'écriture ou d'exécution.

Représentation numérique et symbolique des autorisations de fichiers

Dans la section ci-dessus, nous vous avons montré comment les autorisations sont indiquées à l'aide des lettres "r, w, x" avec le symbole "-". C'est ce qu'on appelle le mode symbolique. Il existe également un autre moyen d'indiquer les autorisations de fichier :le mode numérique.

Pour simplifier la compréhension, reprenons le fichier hello world, qui a les permissions rw-rw-r–.

Selon cela, l'utilisateur dispose des autorisations rw-. Ainsi, les autorisations de lecture et d'écriture sont activées, tandis que l'autorisation d'exécution est désactivée.

Chaque autorisation activée est indiquée par un 1, et l'autorisation désactivée est indiquée par un 0. En faisant cela, nous obtenons un nombre binaire, qui dans ce cas, est 110. Ensuite, nous devrons le convertir en octal, ce qui nous donne le chiffre 6.

Par conséquent, pour le fichier hello world, l'utilisateur a la permission 6. De même, le groupe a également la permission 6. Et l'autre a la permission 4. Ainsi, en mode numérique, la permission pour le fichier hello world est 664.

Le premier chiffre de la représentation numérique représente toujours l'autorisation de l'utilisateur, le deuxième chiffre utilisé pour décrire l'autorisation de groupe et le troisième utilisé pour représenter l'autorisation pour tous les autres utilisateurs.

Vous pourriez penser qu'il sera difficile de convertir le binaire en octal à la volée pour définir les autorisations pour les fichiers et les répertoires. Mais tout ce que vous avez à faire est de vous souvenir de ceci :

  • r =4
  • w =2
  • x =1
  •  – =0

Ainsi, si vous souhaitez créer une valeur triple rwx de r-x, l'équivalent numérique sera 4+0+1=5. De même, pour rw-, la représentation numérique est 4+2+0=6. Et pour l'autorisation rwx, la représentation numérique est 4+2+1=7.

Nous avons également inclus une liste présentant tous les équivalents en mode numérique de chaque triplet rwx possible.

  • Le chiffre "0" indique le triplet rwx "-".
  • Le chiffre "1" indique le triplet rwx "–x".
  • Le chiffre "2" indique le triplet rwx "-w-".
  • Le chiffre "3" indique le triplet rwx "-wx".
  • Le chiffre "4" indique le triplet rwx "r–".
  • Le chiffre "5" indique le triplet rwx "r-x".
  • Le chiffre "6" indique le triplet rwx "rw-".
  • Le chiffre "7" indique le triplet rwx "rwx".

Si vous trouvez la représentation en mode numérique des autorisations un peu difficile à retenir, il n'y a pas lieu de s'inquiéter. La plupart des outils supportent le mode symbolique. Ce n'est que dans des circonstances particulières, trop rarement, que vous aurez besoin d'utiliser le mode numérique.

La commande "chmod" :modification des autorisations de fichier

À présent, vous devriez avoir une compréhension complète du fonctionnement des autorisations de fichiers Linux et de la manière de comprendre les autorisations dont disposent les différents groupes d'utilisateurs pour un fichier ou un répertoire donné.

Donc, avec cela à l'écart, parlons de la modification des autorisations de fichiers. Pour ce faire, créons d'abord un nouveau fichier à l'aide de la commande suivante :

$ touch file.txt

Cela va créer un nouveau "file.txt" dans le répertoire à partir duquel nous exécutons la commande. Ensuite, exécutons la commande ls -l pour voir les autorisations de fichier.

Comme vous pouvez le voir sur l'image, file.txt a les autorisations rw-rw-r–. De cela, nous savons que ni l'utilisateur, ni le groupe, ni l'autre n'ont l'autorisation d'exécuter le fichier. Changeons cela.

Pour ajouter l'autorisation "exécuter" à tous les utilisateurs, nous devons utiliser la commande suivante :

$ chmod a+x file.txt

Ici, un indique que nous modifions l'autorisation pour tous les utilisateurs, et +  indique que nous "ajoutons des autorisations d'exécution".

Voyons maintenant s'il a modifié l'autorisation pour le fichier en exécutant à nouveau la commande ls -l.

Comme vous pouvez le voir, à partir de l'image ci-dessus, les autorisations de fichier pour file.txt sont maintenant modifiées en rwxrwxr-x, donnant à tous les utilisateurs l'autorisation d'exécution.

Si vous n'ajoutez pas le "a" dans la commande, la commande chmod supposera que la modification s'applique à tous les utilisateurs par défaut. Vous pouvez donc saisir la commande :

$ chmod +x file.txt

En dehors de cela, chmod acceptera également les lettres u, g et o utilisées pour désigner "Utilisateur", "Groupe" et "Autre". De plus, au lieu du commutateur "+", vous pouvez utiliser le commutateur "-", qui révoquera l'autorisation.

Considérons la commande suivante comme exemple :

$ chmod o-rx,g-w file.txt

Dans la commande ci-dessus, nous utilisons o-rx pour supprimer les autorisations de lecture et d'exécution de Other. Alors que nous utilisons g-w pour supprimer l'autorisation d'écriture du groupe. Notez que nous devons ajouter une virgule (,) entre les deux actions pour les séparer.

Outre les commutateurs "+" et "-", vous pouvez également utiliser le "=" pour définir les autorisations d'un groupe d'utilisateurs. Au lieu d'ajouter ou de révoquer des autorisations, le commutateur "=" est utilisé pour définir des autorisations spécifiques.

Tenez compte de la commande suivante :

$ chmod u=rx, g=r file.txt

Dans la commande ci-dessus, la partie u=rx définira l'autorisation pour l'utilisateur sur r-x. De même, g=r définira l'autorisation pour le groupe sur r–.

Définir les autorisations à l'aide du mode numérique

Vous pouvez également définir des autorisations à l'aide du mode numérique. Par exemple, supposons que vous souhaitiez définir les autorisations pour file.txt sur rwxr–r–. En vous référant au tableau ci-dessus, vous pouvez voir que la représentation numérique de cette autorisation est 744.

En tant que tel, tout ce que nous avons à faire est d'entrer la commande suivante pour modifier les autorisations de fichier.

$ chmod 744 file.txt

Définir l'autorisation sur tous les fichiers d'un répertoire

Parfois, vous devrez peut-être modifier les autorisations pour tous les fichiers appartenant à un répertoire. Les changer un par un prendra beaucoup de temps et n'est pas pratique. À cette fin, nous avons le commutateur -R.

Par exemple, supposons que vous souhaitiez ajouter une autorisation d'exécution à tous les fichiers du répertoire Documents pour l'utilisateur uniquement. Pour cela, vous pouvez exécuter la commande suivante :

$ chmod -R u+x Documents

Modifier les autorisations pour les fichiers et répertoires qui ne vous appartiennent pas

La commande chmod vous permet uniquement de modifier l'autorisation des fichiers et répertoires que vous possédez. Si vous devez modifier l'autorisation de fichiers et de répertoires qui ne vous appartiennent pas, vous devrez utiliser sudo.

$ sudo chmod <specify the file permissions> <specify the file/directory name>

Autorisations spéciales

À présent, vous devriez avoir une compréhension pratique des autorisations de fichiers, de la propriété des fichiers et de la manière de modifier les autorisations de fichiers pour les différents groupes d'utilisateurs.

En dehors de cela, il existe également des "drapeaux de droit d'accès". Ceux-ci sont utilisés pour fournir des autorisations spéciales aux fichiers et répertoires.

Bout collant

Parlons d'abord de la partie collante. Parfois, les utilisateurs doivent partager et collaborer sur un fichier ou un répertoire. Dans ce cas, vous devrez fournir des autorisations de lecture, d'écriture et d'exécution à tous les utilisateurs du système.

Mais que se passe-t-il si un utilisateur supprime accidentellement (ou gâche) l'un des fichiers du répertoire ? Nous ne pouvons pas simplement supprimer les privilèges d'écriture car cela entravera leur capacité à travailler avec le fichier.

C'est là que le bit collant entre en jeu. Si vous définissez le sticky bit sur un répertoire ou un fichier, seuls l'utilisateur root, le propriétaire du répertoire et le propriétaire du fichier auront l'autorisation de le supprimer ou de le supprimer. Aucun autre utilisateur n'aura la possibilité de supprimer/renommer les fichiers et répertoires activés par sticky bit, même s'ils disposent des autorisations nécessaires.

Par défaut, le sticky bit est utilisé dans le répertoire /tmp. Comme vous le savez, le répertoire /tmp stocke les fichiers temporaires de tous les programmes exécutés sur votre système et utilisés par tous les différents utilisateurs de votre système. Ainsi, pour éviter la suppression accidentelle des fichiers temporaires importants, Linux, par défaut, définit le sticky bit sur /tmp.

Pour définir le sticky bit sur l'un de vos répertoires, vous pouvez utiliser la commande suivante :

$ chmod +t <directory_name>

Ici, "t" est le caractère utilisé pour représenter le sticky bit, et nous utilisons le commutateur "+" pour ajouter le sticky bit au répertoire.

De même, pour supprimer le sticky bit d'un répertoire, nous pouvons utiliser la commande suivante :

$ chmod -t <directory_name>

Setuid et Setgid Bit

Le bit setuid est utilisé pour exécuter un fichier en tant qu'utilisateur propriétaire du fichier. Le bit setgid est utilisé pour exécuter un fichier en tant que groupe propriétaire du fichier. Le bit setuid est utilisé sur les fichiers et n'affecte pas les répertoires. Cependant, le bit setgid peut être utilisé sur les répertoires.

Il permet aux nouveaux fichiers et sous-répertoires créés dans le répertoire d'hériter du groupe propriétaire par opposition au groupe par défaut de l'utilisateur. De plus, les nouveaux sous-répertoires sous le répertoire auront le bit setgid défini, mais les anciens fichiers ne seront pas affectés.

Pour définir le bit setuid sur un fichier, vous pouvez utiliser la commande suivante :

$ sudo chmod +s <file_name>

Alors que pour supprimer le bit setgid, vous devrez utiliser -s à la place. De même, pour définir le setgid sur un fichier, vous pouvez utiliser la commande :

$ sudo chmod g+s <file_name>

Et pour le supprimer, vous devrez utiliser g-s.

Conclusion

Comme vous pouvez le voir, Linux offre des fonctionnalités robustes et complètes pour gérer les droits utilisateur sur les fichiers et répertoires du système. Nous espérons que cet article vous a aidé à comprendre comment ces autorisations sont mises en œuvre. Cependant, si vous avez des confusions ou des questions concernant les autorisations de fichiers Linux, n'hésitez pas à nous laisser un commentaire.

De plus, si vous débutez avec Linux, vous devriez mettre en signet notre série d'articles Learn Linux. Il couvre des tonnes de tutoriels et de guides utiles pour les débutants ainsi que les utilisateurs avancés pour les aider à tirer le meilleur parti de leur système Linux.


Linux
  1. Répertoire Linux tmp :tout ce que vous devez savoir

  2. Compression de fichiers Linux :tout ce que vous devez savoir

  3. Swappiness sous Linux :tout ce que vous devez savoir

  4. Linux - Tout est un fichier ?

  5. Tout ce que vous devez savoir sur le système de fichiers Linux

Tout ce que vous devez savoir sur la distribution Linux Mint

Tout ce que vous devez savoir sur les inodes sous Linux

Tout ce que vous devez savoir sur le lien physique sous Linux

Tout ce que vous devez savoir sur l'UID sous Linux

Tout ce que vous devez savoir sur le répertoire Linux /tmp

Liens matériels et liens logiciels sous Linux :tout ce que vous devez savoir