Qu’est-ce qu’umask sous Linux et comment l’utilisez-vous ?

fatmawati achmad zaenuri/Shutterstock.com

Sous Linux, tous les répertoires et fichiers ont des autorisations d’accès. Vous pouvez utiliser chmod pour définir vos droits d’accès préférés pour différents utilisateurs. Mais qu’est-ce qui décide leur défaut autorisations ? Parlons de umask.

Autorisations d’accès

Tous les répertoires et fichiers ont des drapeaux appelés bits de mode qui décident s’ils peuvent être lus, écrits ou exécutés. Exécuter un fichier signifie l’exécuter comme un programme ou un script. Pour un répertoire, vous devez pouvoir « exécuter » un répertoire pour cd dans ça. Collectivement, les paramètres du mode bit sont appelés les autorisations du répertoire ou du fichier.

Il existe trois ensembles d’autorisations. Un jeu est pour le propriétaire du répertoire ou du fichier. Sauf si le propriétaire a été changé avec chownle propriétaire est la personne qui a créé le répertoire ou le fichier.

Le deuxième ensemble d’autorisations concerne les membres du groupe d’utilisateurs auquel le répertoire ou le fichier a été attribué. Il s’agit généralement du groupe d’utilisateurs du propriétaire.

Il existe un troisième et dernier ensemble d’autorisations pour les « autres ». C’est un fourre-tout pour tous ceux qui ne sont pas contenus dans les deux premiers sets.

En séparant les autorisations comme celle-ci, différentes capacités peuvent être attribuées aux trois catégories. C’est ainsi que l’accès aux répertoires et aux fichiers est contrôlé sous Linux. Bien qu’il s’agisse d’un schéma simple, il fournit un moyen flexible et robuste de dicter qui peut faire quoi avec n’importe quel répertoire ou fichier.

Les bits de mode

Vous pouvez voir les autorisations pour les fichiers en utilisant le ls commande et le -l (format long).

ls -l any*

Nous examinerons également un répertoire en ajoutant le -d (répertoire). Sans cette possibilité, ls regarderait les fichiers à l’intérieur du répertoire, pas le répertoire lui-même.

ls -ld

Utilisation de ls pour voir les autorisations sur les répertoires et les fichiers

Au début de chaque entrée dans le ls liste, il y a une collection de 10 caractères. Voici un gros plan de ces caractères pour un fichier et pour un répertoire.

Les autorisations d'un fichier et d'un répertoire, gros plan

Le fichier est la ligne supérieure, le répertoire est la ligne inférieure. Le tout premier caractère nous indique si nous regardons un répertoire ou un fichier. Un « d » indique un répertoire et un tiret « -” indique un fichier.

Les trois ensembles d’autorisations sont indiqués par chaque groupe de trois caractères. De gauche à droite, ce sont les autorisations pour le propriétaire, le groupe et les autres. Dans chaque ensemble d’autorisations, les trois caractères, de gauche à droite, indiquent le paramètre pour l’autorisation de lecture « r », l’autorisation d’écriture « w » et l’autorisation d’exécution « x ». Une lettre signifie que l’autorisation est définie. Un tiret « -” signifie que l’autorisation n’est pas définie.

Pour notre fichier d’exemple, les 10 caractères signifient :

  • : Il s’agit d’un fichier, pas d’un répertoire.
  • rwx: Le propriétaire peut lire, écrire et exécuter ce fichier.
  • rw-: Les autres membres du même groupe auquel ce fichier est affecté peuvent lire et écrire dans le fichier, mais ils ne peuvent pas l’exécuter.
  • r–: Tout le monde ne peut que lire le fichier.

Pour notre exemple de répertoire, les 10 caractères signifient :

  • : Il s’agit d’un répertoire.
  • rwx: Le propriétaire peut lire, écrire et exécuter (cd dans) ce répertoire.
  • rwx: Les autres membres du même groupe peuvent lire, écrire et cd dans ce répertoire.
  • réception: Tout le monde peut cd dans ce répertoire, mais ils ne peuvent lire que des fichiers. Ils ne peuvent pas supprimer des fichiers, modifier des fichiers ou créer de nouveaux fichiers.

Les autorisations sont stockées dans des bits de mode dans les métadonnées du répertoire ou du fichier. Chaque bit de mode a une valeur numérique. Ils ont tous une valeur de zéro s’ils ne sont pas définis.

  • r: Le bit de lecture a une valeur de 4 s’il est défini.
  • w: Le bit d’écriture a une valeur de 2 s’il est défini.
  • X: Le bit d’exécution a la valeur 1 s’il est défini.

Un ensemble de trois autorisations peut être représenté par la somme des valeurs de bit. La valeur maximale est 4 + 2 + 1 = 7, ce qui définirait les trois autorisations d’un ensemble sur « on ». Cela signifie que toutes les permutations des trois ensembles peuvent être capturées dans une valeur octale à trois chiffres (base 8).

En prenant notre exemple de fichier ci-dessus, le propriétaire a des autorisations de lecture, d’écriture et d’exécution, soit 4+2+1=7. Les autres membres du groupe dans lequel se trouve le fichier ont des autorisations de lecture et d’écriture, soit 4+2=6. La catégorie autres n’a que l’ensemble d’autorisations de lecture, qui est simplement 4.

Ainsi, les autorisations pour ce fichier peuvent être exprimées sous la forme 764.

En utilisant le même schéma, les autorisations pour le répertoire seraient 775. Vous pouvez voir la représentation octale des autorisations à l’aide de la stat commande.

La chmod (change modee bits) est l’outil utilisé pour définir les autorisations sur les répertoires et les fichiers. Mais cela ne dicte pas les autorisations définies sur un répertoire ou un fichier lorsque vous le créez. Un ensemble d’autorisations par défaut est utilisé pour cela.

Les autorisations par défaut et umask

Les autorisations par défaut pour un répertoire sont 777 et les autorisations par défaut pour un fichier sont 666. Cela donne à chaque utilisateur un accès complet à tous les répertoires et la possibilité de lire et d’écrire n’importe quel fichier. Le bit d’exécution n’est pas défini sur les fichiers. Vous ne pouvez pas créer un fichier dont le bit d’exécution est déjà défini. Cela pourrait entraîner des risques pour la sécurité.

Cependant, si vous créez un nouveau répertoire et un nouveau fichier et regardez leurs autorisations, ils ne seront pas définis sur 777 et 666. Nous allons créer un fichier et un répertoire, puis utiliser stat canalisé à travers grep pour extraire la ligne avec la représentation octale de leurs permissions.

touch umask-article.txt
mkdir howtogeek
stat umask-article.txt | grep "Access: ("
stat howtogeek | grep "Access: ("

autorisations par défaut pour un répertoire et un fichier, et la sortie statistique pour chacun d'eux

Ils sont définis sur 775 pour le répertoire et 664 pour le fichier. Ils ne sont pas définis sur les autorisations globales par défaut car une autre valeur les modifie, appelée la valeur umask.

La valeur umask

La valeur umask est définie globalement avec une valeur pour root et une autre pour tous les autres utilisateurs. Mais il peut être défini sur une nouvelle valeur pour n’importe qui. Pour voir quel est le paramètre umask actuel, utilisez le umask commande.

umask

La valeur umask pour un utilisateur régulier

Et pour root :

umask

La valeur umask pour l'utilisateur root

Les autorisations sur un répertoire ou un fichier nouvellement créé sont le résultat de la valeur umask modifiant les autorisations globales par défaut.

Tout comme les bits de mode, la valeur umask représente les trois mêmes ensembles d’autorisations (propriétaire, groupe et autres) et les représente sous la forme de trois chiffres octaux. Vous les verrez parfois écrits sous la forme de quatre chiffres, le premier chiffre étant un zéro. C’est une manière abrégée de dire « ceci est un nombre octal ». Ce sont les trois chiffres les plus à droite qui comptent.

La valeur umask ne peut pas ajouter autorisations. Il ne peut que supprimer—ou masque—autorisations. C’est pourquoi les autorisations par défaut sont si libérales. Ils sont conçus pour être réduits à des niveaux raisonnables par l’application de la valeur umask.

Un ensemble d’autorisations par défaut ne conviendra pas à tous les utilisateurs, ni à tous les scénarios. Par exemple, les répertoires et les fichiers créés par root vont nécessiter des autorisations plus restrictives que l’utilisateur moyen. Et même un utilisateur moyen ne veut pas que tout le monde dans la catégorie autres puisse voir et modifier ses fichiers.

Comment umask masque les autorisations

La soustraction de la valeur du masque des autorisations par défaut vous donne les autorisations réelles. En d’autres termes, si une autorisation est définie dans la valeur umask, elle ne pas être défini dans les autorisations appliquées au répertoire ou au fichier.

Les valeurs umask fonctionnent comme l’inverse des valeurs d’autorisation habituelles.

  • 0: Aucune autorisation n’est supprimée.
  • 1: Le bit d’exécution est désactivé dans les autorisations.
  • 2: Le bit d’écriture est désactivé dans les autorisations.
  • 4: Le bit de lecture est désactivé dans les autorisations.

Les autorisations par défaut de 777 pour les répertoires et 666 pour les fichiers ont été modifiées par la valeur umask de 002 pour donner les autorisations éventuelles de 775 et 664 sur notre répertoire et fichier de test.

stat umask-article.txt | grep "Access: ("
stat howtogeek | grep "Access: ("

Les permissions éventuelles sur un répertoire et un fichier

Cela supprime l’autorisation d’écriture de la catégorie autres sur le répertoire et le fichier.

si root crée un répertoire, leur valeur umask de 022 est appliquée. L’autorisation d’écriture est supprimée pour la catégorie autres et pour la catégorie groupe également.

sudo mkdir root-dir
stat howtogeek | grep "Access: ("

L'autorisation lorsque root crée un répertoire

Nous pouvons voir que les autorisations par défaut de 777 ont été réduites à 755.

EN RELATION: Comment auditer la sécurité de votre système Linux avec Lynis

Modification de la valeur umask par défaut

Il existe différentes valeurs umask pour les shells de connexion et les shells non connectés. Les shells de connexion sont les shells qui vous permettent de vous connecter, localement ou à distance via SSH. Un shell sans connexion est un shell à l’intérieur d’une fenêtre de terminal lorsque vous êtes déjà connecté.

Soyez très prudent si vous modifiez le shell de connexion umask. N’augmentez pas les autorisations et ne réduisez pas votre sécurité. Au contraire, vous devriez être enclin à les réduire et à les rendre plus restrictives.

Sur Ubuntu et Manjaro, les paramètres umask se trouvent dans ces fichiers :

  • Connexion Shell umask: Pour la valeur umask par défaut du shell de connexion : /etc/profile
  • Shell sans connexion: Pour la valeur umask par défaut du shell sans connexion : /etc/bash.bashrc

Sur Fedora, les paramètres umask peuvent être trouvés dans ces fichiers :

  • Connexion Shell umask: Pour la valeur umask par défaut du shell de connexion : /etc/profile
  • Shell sans connexion: Pour la valeur umask par défaut du shell sans connexion : /etc/bashrc

Si vous n’avez pas un besoin pressant de les changer, il est préférable de les laisser tranquilles.

La méthode préférée consiste à définir une nouvelle valeur umask pour tous les comptes d’utilisateurs individuels qui doivent différer de la valeur par défaut. Un nouveau paramètre umask peut être placé dans le fichier « .bashrc » d’un utilisateur dans son répertoire personnel.

gedit .bashrc

Ouverture du fichier .bashrc dans un éditeur

Ajoutez votre paramètre umask en haut du fichier.

Ajout de la valeur umask au fichier .bashrc

Enregistrez le fichier et fermez l’éditeur. ouvrez une nouvelle fenêtre de terminal et vérifiez la valeur umask avec le umask commande.

umask

Vérification de la nouvelle valeur umask

La nouvelle valeur est active.

EN RELATION: Comment se connecter à un serveur SSH depuis Windows, macOS ou Linux

Modifications à court terme de umask

Si vous avez besoin à court terme d’une valeur umask différente, vous pouvez la modifier pour votre session en cours à l’aide de la umask commande. Peut-être que vous allez créer une arborescence de répertoires et certains fichiers et que vous souhaitez renforcer leur sécurité.

Vous pouvez définir la valeur umask sur 077, puis vérifier que la nouvelle valeur est active.

umask 077
umask

Définition d'une valeur umask temporaire

Définir le masque pour avoir une valeur de 7 dans le groupe et les autres catégories signifie que toutes les autorisations sont supprimées de ces catégories. Personne d’autre que vous (et root) ne pourrez entrer dans les nouveaux répertoires et lire et modifier vos fichiers.

mkdir secure-dir
ls -ld secure-dir

Création d'un nouveau répertoire dans une session avec une valeur umask temporaire

Les seules autorisations sont pour le propriétaire du répertoire.

mkdir secure-file.txt
ls -ld secure-file.txt

Création d'un nouveau fichier dans une session avec une valeur umask temporaire

Le fichier est sécurisé contre l’espionnage de tout autre utilisateur. La fermeture de la fenêtre de votre terminal annule le paramètre umask temporaire.

Autres façons d’utiliser umask

Linux permet à certains processus d’hériter des valeurs système umask ou de recevoir leurs propres paramètres umask. Par exemple, useradd utilise un paramètre umask pour créer les répertoires personnels des nouveaux utilisateurs.

Une valeur umask peut également être appliquée à un système de fichiers.

less /etc/fstab

En regardant le fichier /etc/fstab avec less

Sur cet ordinateur, le système de fichiers « /boot/efi » a un paramètre umask de 077 qui lui est appliqué.

Le paramètre umask dans le fichier /etc/fstab

En regardant le point de montage du système de fichiers avec ls nous pouvons vérifier que la valeur umask a supprimé toutes les autorisations de tout le monde à l’exception du propriétaire, root.

ls /boot/efi -ld

Utilisation de ls pour voir les autorisations sur le "/boot./efi" point de montage du système de fichiers

umask et les autorisations ont besoin l’une de l’autre

Les autorisations par défaut sont appliquées à un répertoire ou un fichier après ils ont été transformés par la valeur umask. Il sera très rare que vous deviez modifier la valeur umask de manière permanente pour un utilisateur, mais définir temporairement votre valeur umask pour donner un ensemble plus restreint d’autorisations pendant que vous créez une collection de répertoires ou de documents sensibles est un moyen rapide et facile de renforcer leur Sécurité.

EN RELATION: Comment sécuriser votre serveur Linux avec un pare-feu UFW

Source-135