220 votes

Qu'est-ce que "umask" et comment ça marche ?

Je crois que umask est quelque chose qui contrôle les autorisations des fichiers, mais je ne le comprends pas entièrement.

Après avoir exécuté umask 0644 dans un terminal, je ne peux pas lire les fichiers que je crée avec l'éditeur de texte en ligne de commande nano. J'ai remarqué que les autorisations de ce fichier sont définies sur 0022 au lieu du 0755 par défaut.

Comment umask fonctionne-t-il ? Je pensais que je pouvais simplement retirer chaque chiffre du umask de 0777, 7 - 6 = 1 et 7 - 4 = 3, donc je m'attends à ce que les autorisations soient 0133, mais apparemment, ce n'est pas le cas.

  1. En quoi consiste exactement umask ? Expliquez-le moi comme si j'étais un "débutant en Linux"
  2. Comment calculer avec umask ?
  3. Quels sont les cas d'utilisation pour umask ?

0voto

aderchox Points 192

D'accord, parfois une question a plus de 10 ans mais reste sans réponse satisfaisante à votre goût, donc je publie la mienne. Chaque processus qui crée des fichiers (ou des répertoires) donne à ces fichiers un ensemble de permissions de lecture/écriture/exécution par défaut. Bien que nous ayons utilisé le mot par défaut ici, cela ne signifie pas une valeur par défaut fixe, c'est-à-dire, cela peut changer, tout comme nous pouvons changer le comportement d'un programme en modifiant ses valeurs de configuration.

C'est une croyance pandémique erronée dans le monde des débutants de penser qu'il existe certaines valeurs de permissions par défaut fixes (comme 664 et 775, ou parfois 755 et 644, et ainsi de suite) pour les fichiers et répertoires nouvellement créés. Bien que ces nombres peuvent être les valeurs de permission par défaut, mais comme nous l'avons dit plus tôt, ils ne sont pas des nombres fixes (octaux). Ils peuvent être différents pour chaque processus.

Alors quelle est la formule réelle pour calculer les permissions par défaut pour chaque processus? C'est 0777 & pour les répertoires et 0666 & pour les fichiers (dans les deux cas, l'opérateur & est le ET binaire, c'est-à-dire, en termes simples, il peut désactiver certains bits dans 0777, mais il n'active aucun bit. Ce n'est ni une négation ni une soustraction, c'est du ET binaire).

Avis 1. man umask ne donne pas la deuxième formule (pour les fichiers), mais ne vous inquiétez pas, c'est correct.

Avis 2. Il y a un problème de sécurité légitime avec le fait d'autoriser les fichiers à avoir des permissions d'exécution par défaut. Pour cette raison, les systèmes sont généralement configurés pour supprimer la permission d'exécution pour les fichiers, d'où le 0666 dans la deuxième formule ci-dessus. Les répertoires nécessitent cependant la permission d'exécution pour être navigables. Cela signifie que, par exemple, si /home/ a la permission r, vous pouvez le ls et voir son contenu, mais sans la permission x, vous ne pouvez pas ls /home/$USER).

Avis 3. Pour "définir" le masque pour le processus, utilisez la commande umask . Pour "obtenir" le masque d'un processus, utilisez la commande umask seule sans aucun argument, par exemple, me donne 0022 dans mon cas lorsque je l'exécute dans mon terminal.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X