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 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).
debian@linux:/tmp$ touch test.txt
debian@linux:/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
De même lorsque vous créez un répertoire, le système lui assigne les autorisations 0755.
debian@linux:/tmp$ mkdir test
debian@linux:/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
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éé.
debian@linux:/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 :
Permissions | Notation en octet |
r (lecture) | 4 |
w (écriture) | 2 |
x (exécution) | 1 |
Utilisez l’option -S pour afficher les valeurs de permissions umask pour les utilisateurs, groupes et autres.
root@ns320684:/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 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.
debian@linux:/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
u | Utilisateurs (Le propriétaire du fichier) |
g | Groupe (Membre d’un groupe). |
o | Autre (Les autres). |
a | Tous (é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
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 :
Bit | Cible | Permissions sur les fichiers |
0 | Propriétaires | Lire, écrire et exécuter |
7 | Groupe | Pas de permissions |
7 | Autres | Pas de permissions |
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 :
debian@linux:/tmp$ umask u=rwx,g=rwx,o=rw
debian@linux:/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 :
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 :
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.
Liens
L’article Qu’est-ce que umask et comment utiliser la commande umask est apparu en premier sur malekal.com.
0 Commentaires