Tout simplement pour développer et améliorer certaines des réponses ci-dessus:
Tout d'abord, je vais consulter la page man de mkdir pour GNU Coreutils 8.26 - elle nous donne ces informations sur les options '-m' et '-p' (peut également être donnée sous la forme --mode=MODE et --parents, respectivement):
...définir le mode du fichier (comme avec chmod), pas a=rwx - umask
...aucune erreur si le dossier existe déjà, crée les répertoires parent au besoin
Les déclarations sont vagues et peu claires à mon avis. Mais fondamentalement, cela dit que vous pouvez créer le répertoire avec les autorisations spécifiées par la "notation numérique de chmod" (octales) ou vous pouvez aller "dans l'autre sens" et utiliser votre umask.
Note latérale: Je dis "dans l'autre sens" car la valeur de l'umask est en réalité exactement ce que cela semble être - un masque, masquant/supprimant des autorisations plutôt que de les "accorder" comme avec la notation octale numérique de chmod.
Vous pouvez exécuter la commande intégrée du shell umask
pour voir quel est votre umask à 3 chiffres; pour moi, c'est 022
. Cela signifie que lorsque j'exécute mkdir yodossier
dans un dossier donné (disons, mamaison) et que je le stat
, j'obtiendrai une sortie ressemblant à ceci:
755 richard:richard /mamaison/yodossier
# permissions utilisateur:groupe ce que je viens de créer (yodossier),
# (propriétaire,groupe,autres--dans cet ordre) où je l'ai créé (c'est-à-dire dans mamaison)
#
Maintenant, pour ajouter juste un tout petit peu plus sur ces autorisations octales. Lorsque vous créez un répertoire, "votre système" prend vos permissions de répertoire par défaut [qui s'appliquent aux nouveaux répertoires (sa valeur devrait être 777)] et applique votre umask, masquant effectivement certaines de ces permissions. Mon umask est 022--maintenant si nous "soustrayons" 022 de 777 (techniquement soustraire est une simplification excessive et pas toujours correcte - nous éteignons en réalité les permissions ou les masquons)...nous obtenons 755 comme indiqué (ou "staté") plus tôt.
Nous pouvons omettre le '0' devant l'octal à 3 chiffres (donc ils n'ont pas à être 4 chiffres) puisque dans notre cas nous ne voulions pas (ou plutôt n'avons pas mentionné) de bits collants, setuid ou setgid (vous voudrez peut-être regarder ces derniers, d'ailleurs, ils pourraient être utiles puisque vous allez sur 777). En d'autres termes, 0777 implique (ou est équivalent à) 777 (mais 777 n'est pas nécessairement équivalent à 0777--car 777 spécifie seulement les permissions, pas les setuids, setgids, etc.)
Maintenant, pour appliquer ceci à votre question dans un sens plus large--vous avez (déjà) plusieurs options. Toutes les réponses ci-dessus fonctionnent (du moins selon mes coreutils). Mais vous risquez (ou avez de bonnes chances de) rencontrer des problèmes avec les solutions ci-dessus lorsque vous souhaitez créer des sous-répertoires (des répertoires imbriqués) avec des autorisations 777 en une seule fois. Plus précisément, si je fais ce qui suit dans mamaison avec un umask de 022:
mkdir -m 777 -p yodossier/vostuff/machoseenyostuff
# OU (vous pouvez échanger 777 pour 0777 si vous le souhaitez, le résultat sera le même)
install -d -m 777 -p yodossier/vostuff/machoseenyostuff
J'obtiendrai des permissions 755
pour à la fois yodossier
et vostuff
, avec seulement des permissions 777
pour machoseenyostuff
. Il semble donc que l'umask est tout ce qui est appliqué à yodossier
et vostuff
`( umask 000 && mkdir -p yodossier/vostuff/machoseenyostuff )`
`
et c'est tout. 777 autorisations pour vostuff, machoseenyostuff, et yodossier.
`
1 votes
mkdir temp; chmod 777 temp
est une ligne. Vous pourriez faire de 'temp' une variable et l'enregistrer en tant que commande bash. Est-ce ce que vous cherchez à faire ?1 votes
Salut @white-rose, veuillez consulter la dernière réponse, elle devrait être acceptée. En prime, elle combine mkdir, chmod ET chown dans un seul point!