Sur les systèmes d’exploitation de type Unix, la commande umask renvoie, ou définit, la valeur du masque de création du mode fichier du système.
Cette page couvre la version Linux de umask.
Description
Sur Linux et d’autres systèmes d’exploitation de type Unix, les nouveaux fichiers sont créés avec un ensemble de permissions par défaut. Plus précisément, les permissions d’un nouveau fichier peuvent être restreintes d’une manière spécifique en appliquant un « masque » de permissions appelé umask. La commande umask est utilisée pour définir ce masque, ou pour vous montrer sa valeur actuelle.
Syntaxe
umask
Options
-S | Accepter une représentation symbolique d’un masque, ou en retourner un. |
Masque | Si un masque valide est spécifié, le umask est défini à cette valeur. Si aucun masque n’est spécifié, la valeur actuelle de l’umask est renvoyée. |
Que sont les permissions, et comment fonctionnent-elles ?
Comme vous le savez peut-être, chaque fichier sur votre système est associé à un ensemble de permissions utilisées pour protéger les fichiers : les permissions d’un fichier déterminent quels utilisateurs peuvent accéder à ce fichier, et quel type d’accès ils ont à ce fichier.
Il existe trois classes générales d’utilisateurs :
- L’utilisateur qui possède le fichier (« User »).
- Les utilisateurs appartenant au groupe de propriété défini du fichier (« Groupe »).
- Tout le monde d’autre (« Autre »).
À leur tour, pour chacune de ces classes d’utilisateurs, il existe trois types d’accès au fichier :
- La capacité de regarder le contenu du fichier (« Lire »).
- La capacité de modifier le contenu du fichier (« Write »).
- La capacité d’exécuter le contenu du fichier en tant que programme sur le système (« Execute »).
Donc, pour chacune des trois classes d’utilisateurs, il existe trois types d’accès. Prises ensemble, ces informations constituent les permissions du fichier.
Comment les permissions sont-elles représentées ?
Il existe deux façons de représenter les permissions d’un fichier : symboliquement (en utilisant des symboles comme « r » pour lire, « w » pour écrire et « x » pour exécuter) ou avec une valeur numérique octale.
Par exemple, lorsque vous listez le contenu d’un répertoire en ligne de commande à l’aide de la commande ls comme suit :
ls -l
vous verrez (entre autres informations) les informations de permission de chaque fichier. Ici, elle est représentée symboliquement, ce qui ressemble à l’exemple suivant:
-rwxr-xr--
Il y a dix symboles ici. Le premier tiret (« -« ) signifie qu’il s’agit d’un fichier « ordinaire », autrement dit, pas d’un répertoire (ou d’un périphérique, ou de tout autre type de fichier spécial). Les neuf symboles restants représentent les permissions : rwxr-xr–. Ces neuf symboles sont en fait trois ensembles de trois symboles chacun, et représentent les permissions spécifiques respectives, de gauche à droite :
symboles | signification | rwx | le propriétaire du fichier peut lire, écrire ou exécuter ce fichier en tant que processus sur le système. |
---|---|
r-x | toute personne du groupe du fichier peut lire ou exécuter ce fichier, mais pas y écrire. | r– | toute personne peut lire ce fichier, mais pas y écrire ou exécuter son contenu en tant que processus. |
Spécifier le masque de création de fichier à l’aide de symboles
La forme symbolique générale d’un masque est la suivante :
...
Le symbole de permission est toute combinaison de r (lire), w (écrire) ou x (exécuter), comme décrit ci-dessus.
Le symbole de classe d’utilisateur peut être un ou plusieurs des éléments suivants :
u | Utilisateur (le propriétaire du fichier). | g | Groupe (tout membre du groupe défini du fichier). |
o | Autre (toute autre personne). | a | Tout (équivalent à ugo). |
L’opérateur de permissions peut être l’un des suivants :
+ | permettre aux permissions de fichiers spécifiées d’être activées pour les classes d’utilisateurs spécifiées (les permissions qui ne sont pas spécifiées sont inchangées dans le masque). |
– | interdire l’activation des autorisations de fichiers spécifiées pour les classes d’utilisateurs spécifiées (les autorisations qui ne sont pas spécifiées sont inchangées dans le masque). |
permettre aux autorisations de fichiers spécifiées d’être activées pour les classes d’utilisateurs spécifiées (les autorisations non spécifiées seront interdites par le masque lors de la création du fichier). |
Donc, par exemple, la commande umask suivante :
umask u+w
définit le masque de sorte que lorsque les fichiers sont créés, ils ont des permissions qui autorisent l’écriture pour l’utilisateur (propriétaire du fichier). Le reste des autorisations du fichier serait inchangé par rapport à la valeur par défaut du système d’exploitation.
Des changements multiples peuvent être spécifiés en séparant plusieurs ensembles de notation symbolique par des virgules (mais pas d’espaces !). Par exemple :
umask u-x,g=r,o+w
Cette commande définit le masque de sorte que lorsque les fichiers suivants sont créés, ils ont des autorisations qui :
- interdisent l’autorisation d’exécution pour le propriétaire (utilisateur) du fichier, tout en laissant le reste des autorisations du propriétaire inchangées ;
- activent l’autorisation de lecture pour le groupe, tout en interdisant l’autorisation d’écriture et d’exécution pour le groupe ;
- activent l’autorisation d’écriture pour les autres, tout en laissant le reste des autres autorisations inchangées.
Notez que si vous utilisez l’opérateur égal (« = »), toutes les permissions non spécifiées seront spécifiquement interdites. Par exemple, la commande
umask a=
Définit le masque de création de fichiers afin que les nouveaux fichiers soient inaccessibles à tous.
Préciser le masque de création de fichiers à l’aide de la représentation numérique
Le masque de création de fichiers peut également être représenté numériquement, à l’aide de valeurs octales (les chiffres de 0 à 7). Lors de l’utilisation de la représentation numérique octale, certains chiffres représentent certaines permissions, et ces chiffres sont ajoutés ou soustraits les uns des autres pour représenter la valeur finale et combinée des permissions. Plus précisément, les chiffres 1, 2 et 4 représentent les permissions suivantes :
numéro | permission | 4 | lire | 2 | écrire |
---|---|
1 | exécuter |
Ces numéros sont utilisés car toute combinaison de ces trois numéros sera unique. Le tableau suivant illustre leurs combinaisons uniques:
Valeur de lecture + | Valeur d’écriture + | Valeur d’exécution = | Valeur combinée: | équivalent symbolique : | |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | ||
0 | 1 | 1 | x | 0 | 1 | 0 | 2 | 0 | 2 | w | 0 | 2 | 1 | 3 | wx |
4 | 0 | 4 | 0 | 4 | r | 4 | 0 | 1 | 5 | rx | 4 | 2 | 0 | 6 | rw |
4 | 2 | 1 | 7 | rwx |
Pour chaque classe d’utilisateur, un chiffre peut représenter leurs permissions ; en utilisant l’exemple ci-dessus, nous pourrions représenter la permission symbolique de rwxr-xr– en utilisant le nombre octal à trois chiffres 754. L’ordre des chiffres est toujours le même : Utilisateur, Groupe, Autre.
L’autre chiffre de permission
Dans les représentations octales des permissions de fichiers, il y a en fait quatre chiffres. Les trois chiffres importants dont nous avons parlé sont les trois derniers chiffres. Le premier chiffre est un indicateur spécial de permission de fichier et, pour cette discussion, peut être considéré comme étant toujours égal à zéro. Ainsi, à partir de maintenant, lorsque nous discutons de la permission de fichier 777, elle peut également être appelée 0777.
Comment fonctionne réellement l’umask ?
L’umask masque les permissions en les restreignant d’une certaine valeur.
Essentiellement, chaque chiffre de l’umask est » soustrait » de la valeur par défaut du système d’exploitation pour arriver à la valeur par défaut que vous définissez. Il ne s’agit pas vraiment d’une soustraction ; techniquement, le masque est nié (son complément binaire est pris) et cette valeur est ensuite appliquée aux permissions par défaut à l’aide d’une opération ET logique. Le résultat est que l’umask indique au système d’exploitation quels bits de permission » désactiver » lorsqu’il crée un fichier.
Dans Linux, la valeur des permissions par défaut est 666 pour un fichier ordinaire, et 777 pour un répertoire. Lors de la création d’un nouveau fichier ou d’un répertoire, le noyau prend cette valeur par défaut, « soustrait » la valeur de l’umask, et donne aux nouveaux fichiers les permissions qui en résultent.
Ce tableau montre comment chaque chiffre de la valeur umask affecte les permissions des nouveaux fichiers et répertoires :
Digit de l’umask | Permissions de fichier par défaut | Permissions de répertoire par défaut | |
---|---|---|---|
0 | rw | rwx | |
rw | |||
2 | r | rx | 3 | r | r | 4 | w | wx |
5 | w | w | |
6 | x | x | x |
7 | (aucune permission autorisée) | (aucune permission autorisée) |
Donc si notre valeur umask est 022, alors tout nouveau fichier aura, par défaut, les permissions 644 (666 – 022). De même, tout nouveau répertoire sera, par défaut, créé avec les permissions 755 (777 – 022).
Exemples
Pour afficher la valeur actuelle du umask de votre système, entrez la commande:
umask
qui renvoie le umask de votre système sous la forme d’un nombre octal à quatre chiffres, par exemple :
0002
Encore, le premier zéro est un chiffre de permission spécial et peut être ignoré ; pour nos besoins, 0002 est identique à 002.
Pour voir cela comme une représentation symbolique, utilisez le drapeau -S :
umask -S
Ce qui renvoie la même valeur symboliquement, par exemple :
u=rwx,g=rwx,o=rx
où u signifie utilisateur, g signifie groupe et o signifie autre. Cela nous dit le Donc, si nous créons un nouveau fichier, il a les permissions par défaut 664, ce qui est 666 (les permissions par défaut pour les fichiers) masqué par 002 (notre valeur umask).
Testons cela en créant un nouveau fichier avec la commande touch :
touch testfile
Et maintenant obtenons une liste de répertoire pour ce fichier :
ls -l testfile
-rw-rw-r-- 1 myusername myusername 0 Jan 7 14:29 testfile
Comme prévu, le nouveau fichier a des permissions -rw-rw-r–, ou 0664 : Le propriétaire et le groupe peuvent lire ou écrire le fichier, et les autres ne peuvent que le lire.
Maintenant, modifions l’umask. Pour définir un umask de 022, utilisez la commande :
umask 022
Cela revient à exécuter umask 0022 ; si vous ne spécifiez que trois chiffres, le premier chiffre sera supposé être zéro. Vérifions que le changement a eu lieu :
umask
0022
Et maintenant, créons un nouveau fichier :
touch testfile2
Et maintenant, visualisons la liste de son répertoire, avec le premier fichier que nous avons créé, en utilisant le caractère générique astérisque (« * ») pour visualiser tous les fichiers dont le nom commence par « testfile » :
ls -l testfile*
-rw-rw-r-- 1 myusername myusername 0 Jan 7 14:29 testfile-rw-r--r-- 1 myusername myusername 0 Jan 7 14:39 testfile2
Comme vous pouvez le voir, testfile2 a les permissions 644.
Voici d’autres exemples de commandes umask :
umask a+r
Définit le masque pour que les nouveaux fichiers permettent à tous les utilisateurs de les lire ; les autres permissions seront inchangées par rapport à la valeur par défaut.
umask a-x
Définit le masque de sorte que les nouveaux fichiers ne soient initialement exécutables par aucun utilisateur ; les autres autorisations par défaut restent inchangées par rapport aux valeurs par défaut.
umask u=rw,go=
Définit le masque de sorte que les nouveaux fichiers soient lisibles et inscriptibles par l’utilisateur propriétaire du fichier, mais ne puissent pas être exécutés ; les membres du groupe et les autres n’ont aucune autorisation pour accéder au fichier.
umask 777
Rendre les nouveaux fichiers inaccessibles à tous – personne ne peut les lire, les écrire ou les exécuter.
umask 000
Rendre les nouveaux fichiers complètement accessibles (lecture, écriture et exécution) à absolument tout le monde. Cependant, il s’agit d’une mauvaise idée. Ne faites pas cela.
chmod – Modifier les permissions des fichiers ou des répertoires.
csh – L’interpréteur de commandes du shell C.
ksh – L’interpréteur de commandes du shell Korn.
sh – L’interpréteur de commandes du shell Bourne.