umask
umask
(user file creation mode mask, masque de création de fichier par l'utilisateur) est un attribut des processus Unix, ainsi que la commande POSIX qui permet de modifier cet attribut. Le umask définit les permissions par défaut d'un répertoire ou d'un fichier créé.
La syntaxe de la commande est la suivante :
umask x
Où x est un nombre exprimé sous forme octale qui déterminera les permissions par complétion de 0666 pour les fichiers et de 0777 pour les répertoires qui seront créés ultérieurement par les appels systèmes creat(2) et mkdir(2), c'est-à-dire que les permissions seront obtenues par l'opération binaire 0777 (ou 0666) AND NOT x. Autrement dit, les bits du masque sont annulés, ce qui signifie que les droits correspondant à ces bits sont supprimés.
Le umask le plus courant est 0022. Il consiste à supprimer les droits d'écriture pour les membres du groupe et les autres sur les fichiers. En effet :
Calcul de : 06668 AND NOT 00228 00228 = 000 010 0102 NOT 00228 = 111 101 1012 06668 = 110 110 1102 06668 AND NOT 00228 = 110 100 1002 06668 AND NOT 00228 = 06448
Ces permissions correspondent à rw-r--r--, c'est-à-dire que le propriétaire du fichier a des droits en lecture et en écriture, tandis que les membres du groupe et les autres ne disposent que de la permission de lecture.
Et, de même, aux répertoires :
07778 AND NOT 00228 = 07558
C'est-à-dire les mêmes droits de lecture/écriture que pour les fichiers, et en plus les droits d'exécution qui pour le cas des répertoires permet de s'y positionner (avec la commande cd par exemple) : rwxr-xr-x.
A l'inverse, le umask 0000 ne supprime aucun droit.
Utilisation
La commande umask peut être introduite avant chaque création de fichier ou de répertoire, mais une ligne est habituellement insérée dans le fichier d'initialisation du shell.
$ umask 0022
$ mkdir repertoire
$ touch fichier
$ ls -l
drwxr-xr-x 2 user user 512 Jan 1 23:59 repertoire
-rw-r--r-- 1 user user 0 Jan 1 23:59 fichier