Juste pour développer et améliorer certaines des réponses ci-dessus:
Tout d'abord, je vais vérifier la page de manuel mkdir pour GNU Coreutils 8.26 - elle nous donne ces informations sur les options '-m' et '-p' (peut également être donnée comme --mode = MODE et --parents, respectivement ):
... set [s] mode de fichier (comme dans chmod), pas a = rwx - umask
... aucune erreur si existante, créez des répertoires parents si nécessaire
Les déclarations sont vagues et peu claires à mon avis. Mais fondamentalement, cela dit que vous pouvez créer le répertoire avec les permissions spécifiées par "chmod numeric notation" (octals) ou vous pouvez aller "dans l'autre sens" et utiliser un / votre umask.
Note latérale: je dis "dans l'autre sens" car la valeur umask est en fait exactement ce à quoi elle ressemble - un masque , masquant / supprimant les permissions plutôt que de les "accorder" comme avec la notation octale numérique de chmod.
Vous pouvez exécuter la commande shell-builtin umask
pour voir ce qu'est votre umask à 3 chiffres; pour moi, c'est 022
. Cela signifie que lorsque mkdir yodirectory
j'exécute dans un dossier donné (par exemple, mahome) et stat
que j'obtiens une sortie ressemblant à ceci:
755 richard:richard /mahome/yodirectory
# permissions user:group what I just made (yodirectory),
# (owner,group,others--in that order) where I made it (i.e. in mahome)
#
Maintenant, pour ajouter un tout petit peu plus sur ces autorisations octales. Lorsque vous créez un répertoire, "votre système" prend vos perms de répertoire par défaut '[qui s'applique aux nouveaux répertoires (sa valeur devrait 777)] et claque sur votre masque (u), cachant effectivement certaines de ces perms'. Mon umask est 022 - maintenant si nous "soustrayons" 022 de 777 (techniquement soustraire est une simplification excessive et pas toujours correcte - nous désactivons en fait les perms ou le masque les ing) ... nous obtenons 755 comme indiqué (ou « statted » ) plus tôt.
Nous pouvons omettre le '0' devant les octals à 3 chiffres (ils ne doivent donc pas être à 4 chiffres) car dans notre cas, nous ne voulions (ou plutôt n'avons pas mentionné) de stickybits, setuids ou setgids (vous voudrez peut-être examiner ceux-ci, au fait, ils pourraient être utiles puisque vous allez 777). Donc, en d'autres termes, 0777 implique (ou équivaut à) 777 (mais 777 n'est pas nécessairement équivalent à 0777 - puisque 777 ne spécifie que les permissions, pas les setuids, setgids, etc.)
Maintenant, pour appliquer cela à votre question dans un sens plus large - vous avez (déjà) quelques options. Toutes les réponses ci-dessus fonctionnent (du moins selon mes coreutils). Mais vous pouvez (ou êtes assez susceptible de) rencontrer des problèmes avec les solutions ci-dessus lorsque vous souhaitez créer des sous répertoires (répertoires imbriqués) avec des autorisations 777 en même temps. Plus précisément, si je fais ce qui suit dans mahome avec un umask de 022:
mkdir -m 777 -p yodirectory/yostuff/mastuffinyostuff
# OR (you can swap 777 for 0777 if you so desire, outcome will be the same)
install -d -m 777 -p yodirectory/yostuff/mastuffinyostuff
Je vais obtenir des permanentes 755
pour les deux yodirectory
et yostuff
, avec uniquement des 777
permanentes pour mastuffinyostuff
. Il semble donc que umask
c'est tout ce qui est giflé yodirectory
et yostuff
... pour contourner cela, nous pouvons utiliser un sous-shell:
( umask 000 && mkdir -p yodirectory/yostuff/mastuffinyostuff )
et c'est tout. 777 permanentes pour yostuff, mastuffinyostuff et yodirectory.
mkdir temp; chmod 777 temp
est une ligne. Vous pouvez faire de «temp» une variable et l'enregistrer en tant que commande bash. Est-ce ce que vous cherchez à faire?