quelle est la difference entre umask et chmod

13

Je suis complètement confus entre umask et chmod. Les deux sont utilisés pour accorder des autorisations aux fichiers. Mais où est exactement la différence et quand les utiliser.

J'ai lu la documentation en ligne mais les deux me ressemblent.

umask: umask est utilisé pour définir les autorisations de fichier par défaut. Ces autorisations seront utilisées pour tous les fichiers suivants lors de leur création. chmod: utilisé pour modifier les autorisations de fichier et de répertoire.

Selon ma compréhension, si par exemple le fichier test.doc est créé.

Par défaut, unix donne au fichier 022 le code umask.

Maintenant, quand je le change en chmod 666 test.doc, je peux changer le niveau d'autorisation de ce fichier.

Et si j'utilise umask 666 pour le même fichier.

Quelle différence cela se produit lorsque j'utilise chmod 666 et umask 666

user548781
la source
2
umaskdéfinit une variable d'environnement qui définit automatiquement les autorisations de fichier pour les fichiers nouvellement créés . chmodmodifie les autorisations des fichiers existants .
DavidPostill
1
@DavidPostill. Non, umaskne définit pas "une variable d'environnement" Ce qu'il fait, c'est définir le masque de création de mode fichier de l'environnement d'exécution shell actuel.
fpmurphy
@ fpmurphy1 Merci pour la clarification :)
DavidPostill

Réponses:

11

La différence est que cela umaskn'implique que de nouveaux fichiers . Comme vous l'avez indiqué, umask définit les autorisations par défaut qu'un fichier / répertoire aura au moment de la création, mais umaskne les affecte plus par la suite.

chmod, cependant, le fichier doit être créé avant d'être exécuté.

Par conséquent, si vous exécutez umask, cela n'aura aucun effet sur les fichiers existants.

nKn
la source
2
Vous ne pouvez pas l'utiliser umasksur un fichier, il n'a pas d' fileargument.
DavidPostill
À droite, réécrit cette partie.
nKn
4

umaskest très différent de chmod, en fait.

  1. Une différence importante n'a pas encore été mentionnée: chmoddéfinit, mais umask efface (restreint) les bits d'autorisation. C'est pourquoi cela s'appelle "masque" (comme dans "bitmask").

  2. Comme David l'a écrit , il umasks'agit d'un paramètre de configuration (au niveau du processus), il n'est donc pas appliqué à des fichiers spécifiques (par opposition à chmod).

  3. Ce qui nous amène à un autre point important: umaskne se limite pas aux fichiers. Il est également appliqué lors de la création de répertoires. (Voir aussi par exemple cette réponse .)

  4. Il est également important que la chmodcommande elle-même ne soit pas affectée par la configuration actuelle umask.

Maintenant, à votre exemple de ce qui umask 666ferait:

Il indiquera au processus actuel (par exemple votre shell) que tous les nouveaux objets du système de fichiers doivent être créés avec les bits R+ W(4 + 2 = 6) supprimés (de toutes les autorisations implicitement ou explicitement demandées lors de la création). (Donc, 666 n'est pas une valeur très pratique, car il permet uniquement de définir les Xbits (d'exécution), mais pour les fichiers illisibles ...)

Par exemple:

$ touch foo; ls -la foo
-rw-r--r-- ... foo   <-- default permissions

$ umask 666
$ touch bar; ls -la bar
---------- ... bar   <-- perms. after the new umask (restriction) is set
$ mkdir foodir; ls -la | grep foodir
d--x--x--x ... dir   <-- not very practical for dirs, either

$ chmod 777 bar; ls -la bar
-rwxrwxrwx .... bar* <-- chmod happily ignores the current umask

$ umask 022
$ touch bong; ls -la bong
-rw-r--r-- ... bong  <-- (so, it seems this was the default umask)

$ chmod 666 bong; ls -la bong
-rw-rw-rw- ... bong  <-- no surprise of any kind here
Sz.
la source
0

UMASK = chmod 777 - autorisations umask

umask 022 => 777 - 022 => chmod 755
umask 077 => 777 - 077 => chmod 700
umask 002 => 777 - 002 => chmod 775
umask 007 => 777 - 007 => chmod 770
umask 027 => 777 - 027 => chmod 750
umask 177 => 777 - 177 => chmod 600

Quelque chose comme ca.

PanPikuś
la source
0

L'autorisation par défaut pour les répertoires / fichiers est umask 022, les répertoires sont définis par défaut avec l'autorisation 755 ( drwx-rw-rw) et les fichiers sont définis avec 644 ( -rw-r--r--). Fondamentalement, vous soustrayez la valeur octale de l'autorisation souhaitée de 777 pour un répertoire et de 666 pour un fichier. Donc, à partir de l'exemple ci-dessus:

(directory) umask 022 => 777 - 022 = 755

(file) umask 022 => 666 - 022 = 644

Vous pouvez trouver le résultat de la umask octalcommande dans la source lorsque vous utilisez umask , selon l'octal et s'il s'agit d'un fichier ou d'un répertoire.

La source

Cependant , si vous chmod 022 <file>recherchez un répertoire, vous devriez obtenir ceci: ce d----w--w-qui n'aurait pas beaucoup de sens.

Ci-dessous, vous trouverez une grande description de la valeur octale que vous pouvez également récupérer ici par Somnath Muluk avec d'excellentes sources.

N   Description                      ls   binary    
0   No permissions at all            ---  000
1   Only execute                     --x  001
2   Only write                       -w-  010
3   Write and execute                -wx  011
4   Only read                        r--  100
5   Read and execute                 r-x  101
6   Read and write                   rw-  110
7   Read, write, and execute         rwx  111
R4zZ
la source