Comment est-ce que umask est calculé sous Linux?

Donc, je sais que umask peut restreindre les users privilégiés, en utilisant ce format umask ugo .

Je comprends que read = 4, write = 2, et exec = 1. Cependant, quand je tape umask , il returnne 4 numbers qui est 0022 ou 0073 . Je ne comprends pas comment cela fonctionne maintenant parce qu'il y a un chiffre supplémentaire. Quel est ce chiffre supplémentaire et que signifie 0022 ?

Supposons que le masque par défaut de 0666. umask 0022 rende le nouveau masque 0644 (0666-0022 = 0644) ce qui signifie que le groupe et d'autres ont des permissions de lecture (pas d'écriture ou d'exécution).

Le chiffre "supplémentaire" (le premier nombre = 0) indique qu'il n'y a pas de modes spéciaux.

Si le mode commence par un chiffre, il sera interprété comme octal sinon il est symbolique.

0 est un chiffre, tout comme 1 (pour le bit collant) ou 6 (pour SGID). Une command telle que chmod peut être appelée par d'autres methods, telles que chmod ug+rw mydir où vous pouvez append les permissions de lecture et d'écriture à l'user et au groupe. Notez que le mode dans ce cas (ug + rw) ne commence pas par un chiffre, ne serait donc pas interprété comme octal mais plutôt symbolique.

Voir en.wikipedia.org/wiki/Chmod#Symbolic_examples pour symbolics ainsi que http://www.lifeaftercoffee.com/2007/03/20/special-permission-modes-in-linux-and-unix/ pour un peu sur les modes spéciaux.

Je ne sais pas que vous démasquerez le premier bit avec umask , mais techniquement vous le pourriez. Cela expliquerait pourquoi vous le voyez presque toujours comme un zéro.

Crédit à pinkfloydx33

Le premier chiffre du masque traite des permissions spéciales qui ne cadrent pas aussi bien dans le propriétaire / groupe / autre model. Lorsque quatre numbers sont fournis pour une autorisation de file, le premier fait reference à ces valeurs spéciales:

 4000 = SUID 2000 = SGID 1000 = sticky bit 

Le bit SUID, abréviation de set-user-ID, provoque l'exécution d'un programme exécutable avec l'identifiant user (uid) effectif du propriétaire. En d'autres termes, peu importe qui l'exécute, le programme s'exécute avec les droits du propriétaire. Cela est souvent vu dans les programmes qui font des choses qui nécessitent des privilèges root, mais qui sont destinés à être exécutés par des users normaux: passwd est un exemple.

Le bit SGID, abréviation de set-group-ID, est très similaire, mais fonctionne avec l'identifiant de groupe effectif (gid) du propriétaire.

Le bit collant est un peu plus compliqué, si vous voulez plus d'informations à ce sujet, vous pouvez lire la page de manuel pour sticky .

Ces bits peuvent également être utilisés avec des directorys, mais leurs significations changent.

Je ne crois pas que vous pouvez réellement définir l' umask pour vous permettre d'activer l'un de ces bits supplémentaires par défaut, mais vous ne voudrez probablement jamais faire cela de toute façon.

Crédit à l' user470379