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
umask
définit une variable d'environnement qui définit automatiquement les autorisations de fichier pour les fichiers nouvellement créés .chmod
modifie les autorisations des fichiers existants .umask
ne 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.Réponses:
La différence est que cela
umask
n'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, maisumask
ne 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.la source
umask
sur un fichier, il n'a pas d'file
argument.umask
est très différent dechmod
, en fait.Une différence importante n'a pas encore été mentionnée:
chmod
définit, maisumask
efface (restreint) les bits d'autorisation. C'est pourquoi cela s'appelle "masque" (comme dans "bitmask").Comme David l'a écrit , il
umask
s'agit d'un paramètre de configuration (au niveau du processus), il n'est donc pas appliqué à des fichiers spécifiques (par opposition àchmod
).Ce qui nous amène à un autre point important:
umask
ne se limite pas aux fichiers. Il est également appliqué lors de la création de répertoires. (Voir aussi par exemple cette réponse .)Il est également important que la
chmod
commande elle-même ne soit pas affectée par la configuration actuelleumask
.Maintenant, à votre exemple de ce qui
umask 666
ferait: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 lesX
bits (d'exécution), mais pour les fichiers illisibles ...)Par exemple:
la source
UMASK = chmod 777 - autorisations umask
Quelque chose comme ca.
la source
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 octal
commande 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: ced----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.
la source