Menu Fermer

Qu’est-ce que umask et comment utiliser la commande umask

Sur les systèmes d’exploitation de type UNIX, la commande umask (user file-creation mode) renvoie ou définit la valeur du masque de création de mode de fichier du système.
Elle permet de définir les autorisations lors de la création d’un fichier ou d’un répertoire.

Dans ce tutoriel, je vous explique comment fonctionne les valeurs umask et comment utiliser la commande umask sur Linux.

Qu'est-ce que umask et comment utiliser la commande umask

Qu’est-ce que Umask dans Linux

Umask (user file-creation mode) définit le masque de création de fichiers, c’est à dire les permissions et ACL attribués à un fichier ou un répertoire lors de sa création.
Mais c’est aussi une commande Linux qui est utilisée pour attribuer les ensembles d’autorisation de fichier par défaut pour les dossiers et fichiers nouvellement créés.
Le terme mask fait référence au regroupement des bits d’autorisation.
L’umask est utilisé par open, mkdir, touch et d’autres appels systèmes qui créé ou modifie les permissions sur les nouveaux fichiers ou répertoires.

Lorsque vous utilisez le terme umask, nous faisons référence à l’une des deux significations suivantes :

  • Le masque en mode de création de fichiers utilisateur qui est utilisé pour configurer les autorisations par défaut pour les fichiers et répertoires nouvellement créés
  • La commande «umask» qui est utilisée pour définir la valeur umask

Comme vous le savez probablement déjà, tous les systèmes d’exploitation basés sur UNIX ont un ensemble de propriétés utilisées pour définir qui est autorisé à lire, écrire ou exécuter des fichiers ou des répertoires spécifiques. Il existe trois catégories appelées «classes d’autorisations» auxquelles ces autorisations s’appliquent, et elles sont notées comme suit.

Le umask permet de définir les permissions de fichiers (fmask) et du répertoire (dmask).

Ainsi, lorsque vous créez un fichier, le système assigne automatiquement des permissions d’accès par défaut (0644).

[email protected]:/tmp$ touch test.txt
[email protected]:/tmp$ stat test.txt
  File: test.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d      Inode: 51904527    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  debian)   Gid: ( 1000/  debian)
Access: 2022-06-25 09:22:19.077244613 +0200
Modify: 2022-06-25 09:22:19.077244613 +0200
Change: 2022-06-25 09:22:19.077244613 +0200
 Birth: 2022-06-25 09:22:19.077244613 +0200
Qu'est-ce que Umask dans Linux

De même lorsque vous créez un répertoire, le système lui assigne les autorisations 0755.

[email protected]:/tmp$ mkdir test
[email protected]:/tmp$ stat test
  File: test
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: 801h/2049d      Inode: 51904528    Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 1000/  debian)   Gid: ( 1000/  debian)
Access: 2022-06-25 09:24:17.399528661 +0200
Modify: 2022-06-25 09:24:17.399528661 +0200
Change: 2022-06-25 09:24:17.399528661 +0200
 Birth: 2022-06-25 09:24:17.399528661 +0200
Qu'est-ce que Umask dans Linux

Sur un serveur FTP ou un partage NFS, le umask a son importance, car il permet de supprimer ou modifier des fichiers ou répertoires.

Comment utiliser la commande umask pour changer les valeurs umask

Pour afficher la valeur umask actuelle, nous utilisons la commande umask. L’exécution de la commande umask en elle-même fournit les autorisations par défaut qui sont attribuées lorsqu’un fichier ou un dossier est créé.

[email protected]:/tmp$ umask
0022

Pour changer la valeur umask, saisissez la commande avec la valeur :

umask <valeur>

Par exemple pour assigner la valeur 022 :

umask 022

On retrouve les valeurs décimales des autorisations utilisées par chmod et de manière générale par Linux :

PermissionsNotation en octet
r (lecture)4
w (écriture)2
x (exécution)1
Notations des autorisations sur Linux

Utilisez l’option -S pour afficher les valeurs de permissions umask pour les utilisateurs, groupes et autres.

[email protected]:/tmp# umask -S
u=rwx,g=rx,o=rx

De ce fait, il est aussi possible de modifier la valeur umask avec cette syntaxe :

umask u=rwx,g=rwx,o=rw
Comment utiliser la commande umask pour changer les valeurs umask

Comment umask fonctionne ?

La commande umask masque les niveaux d’autorisation en les qualifiant avec une certaine valeur.
Pour expliquer davantage comment la valeur Umask est appliquée, voici un exemple.
Disons que nous voulons définir les autorisations par défaut pour tous les nouveaux fichiers ou dossiers sur 644 et 755. Nous utiliserions ensuite la commande suivante.

[email protected]:/tmp$ umask 022

L’autorisation «2» (autorisation d’écriture) sera «filtrée» à partir des autorisations par défaut du système de 666 et 777 (d’où le nom «masque».)
À partir de maintenant, le système attribue désormais les autorisations par défaut de 644 et 755 sur Nouveaux fichiers et répertoires. Autrement dit, pour calculer les bits d’autorisation pour un nouveau fichier ou un nouveau répertoire, nous soustrayons simplement la valeur umask de la valeur par défaut, comme ceci :

  • 666 – 022 = 644 — pour les fichiers
  • 777 – 022 = 755 — pour les répertoires
uUtilisateurs (Le propriétaire du fichier)
gGroupe (Membre d’un groupe).
oAutre (Les autres).
aTous (équivaut à ugo).

Les valeurs des autorisations en octal :

  • 0: Lire, écrire et exécuter
  • 1: Lire et écrire
  • 2: Lire et exécuter
  • 3: Lire uniquement
  • 4: Écrire et exécuter
  • 5: Écrire uniquement
  • 6: Exécuter uniquement
  • 7: Aucune autorisation
Les explications et fonctionnement de umask sur Linux

Nous pouvons utiliser les informations ci-dessus pour calculer nos autorisations de fichier. Par exemple, si notre umask est défini sur 077, l’autorisation peut être calculée comme suit :

BitCiblePermissions sur les fichiers
0PropriétairesLire, écrire et exécuter
7GroupePas de permissions
7AutresPas de permissions
Les permissions umask

A noter que le système ne créera jamais un fichier avec les droits en exécution.
Ainsi, si on définit la valeur umask suivante :

[email protected]:/tmp$ umask u=rwx,g=rwx,o=rw
[email protected]:/tmp$ umask
0037

Ce qui donne en arrondissant au supérieur :

  • 666 – 037 = 640
  • 777 – 037 = 740

On retrouve bien ces autorisations et masques lors de la création d’un fichier ou répertoire :

Changer la valeur umask avec la commande umask Linux

Enfin la commande umask accepte la notation a pour ALL afin d’attribuer à la fois les autorisations aux utilisateurs, groupes et autres :

umask a=rwx

équivaut à :

umask u=rwx,g=rwx,o=rxw

Soit donc un umask de 0000.

Les emplacements de la configuration umask dans Linux

Dans la plupart des distributions Linux, la valeur umask peut être trouvée et configurée dans les emplacements suivants :

  • /etc/profil – C’est là que les variables par défaut à l’échelle du système sont stockées
  • /etc/bash.bashrc – C’est là que les fichiers de configuration de shell par défaut sont stockés
  • ~/.bashrc ou ~/.profile – Modifier la configuration umask pour l’utilisateur

Vous pouvez spécifier la commande umask avec une valeur umask dans n’importe quel de ces fichiers de configuration.

Sur Debian, l’initialisation du profile lors du login se fait dans /etc/login.defs.
On y retrouve la valeur par défaut d’umask :

Les emplacements de la configuration umask dans Linux

Depuis Linux 4.7, l’umask de n’importe quel processus peut être visualisé via le champ Umask du fichier /proc/[PID]/status.
L’inspection de ce champ dans /proc/self /status permet à un processus de récupérer son umask sans le changer en même temps.

Les emplacements de la configuration umask dans Linux