Qu’est-ce qu’umask sous Linux et comment l’utilisez-vous ?
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
.
Sommaire
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 chown
le 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
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.
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 :
- ré: 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: ("
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
Et pour root :
umask
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: ("
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: ("
Nous pouvons voir que les autorisations par défaut de 777 ont été réduites à 755.
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
Ajoutez votre paramètre umask en haut du fichier.
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
La nouvelle valeur est active.
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é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
Les seules autorisations sont pour le propriétaire du répertoire.
mkdir secure-file.txt
ls -ld secure-file.txt
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
Sur cet ordinateur, le système de fichiers « /boot/efi » a un paramètre umask de 077 qui lui est appliqué.
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
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é.