Nur um einige der oben genannten Antworten zu erweitern und zu verbessern:
Zuerst überprüfe ich die Manpage mkdir auf GNU Coreutils 8.26 - sie gibt uns diese Informationen über die Optionen '-m' und '-p' (kann auch als --mode = MODE bzw. --parents angegeben werden ):
... setze [s] Dateimodus (wie in chmod), nicht a = rwx - umask
... kein Fehler, falls vorhanden, übergeordnete Verzeichnisse nach Bedarf erstellen
Die Aussagen sind meiner Meinung nach vage und unklar. Grundsätzlich heißt es jedoch, dass Sie das Verzeichnis mit Berechtigungen erstellen können, die durch die numerische Notation "chmod" (Oktale) angegeben sind, oder "in die andere Richtung" gehen und eine / Ihre Umask verwenden können.
Randnotiz: Ich sage "andersherum", da der Umask-Wert genau das ist, wonach er sich anhört - eine Maske , die Berechtigungen versteckt / entfernt, anstatt sie wie bei der numerischen Oktalschreibweise von chmod zu "gewähren".
Sie können den Shell-eingebauten Befehl ausführen, um umask
zu sehen, was Ihre dreistellige Umask ist. für mich ist es 022
. Dies bedeutet, dass ich beim Ausführen mkdir yodirectory
in einem bestimmten Ordner (z. B. Mahome) stat
eine Ausgabe bekomme, die dieser ähnelt:
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)
#
Um noch ein kleines bisschen mehr über diese oktalen Berechtigungen hinzuzufügen. Wenn Sie ein Verzeichnis erstellen, nimmt "Ihr System" Ihre Standardverzeichnis-Dauerwellen "[was für neue Verzeichnisse gilt (der Wert sollte 777 sein)] und klatscht auf Ihre (u) -Maske, wodurch einige dieser Dauerwellen effektiv ausgeblendet werden." Meine Umask ist 022 - wenn wir jetzt 022 von 777 "subtrahieren" (technisch gesehen ist das Subtrahieren eine übermäßige Vereinfachung und nicht immer korrekt - wir schalten tatsächlich Dauerwellen aus oder maskieren sie) ... erhalten wir 755 wie angegeben (oder "statted"). ) vorhin.
Wir können die '0' vor den 3-stelligen Oktalen weglassen (sie müssen also nicht 4-stellig sein), da wir in unserem Fall keine Stickybits, Setuids oder Setgids wollten (oder eher nicht erwähnten) (Vielleicht möchten Sie diese untersuchen, übrigens, sie könnten nützlich sein, da Sie 777 gehen). Mit anderen Worten, 0777 impliziert (oder entspricht) 777 (aber 777 ist nicht unbedingt gleich 0777 - da 777 nur die Berechtigungen angibt, nicht die Setuids, Setgids usw.)
Um dies nun im weiteren Sinne auf Ihre Frage anzuwenden, haben Sie (bereits) einige Optionen. Alle obigen Antworten funktionieren (zumindest gemäß meinen Coreutils). Es kann jedoch (oder wahrscheinlich) zu Problemen mit den oben genannten Lösungen kommen, wenn Sie Unterverzeichnisse (verschachtelte Verzeichnisse) mit 777 Berechtigungen gleichzeitig erstellen möchten . Insbesondere, wenn ich in Mahome Folgendes mit einer Umask von 022 mache:
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
Ich werde Dauerwellen 755
für beide yodirectory
und yostuff
mit nur 777
Dauerwellen für bekommen mastuffinyostuff
. Es scheint also, dass das umask
alles ist, worauf geklatscht wird, yodirectory
und yostuff
... um dies zu umgehen, können wir eine Unterschale verwenden:
( umask 000 && mkdir -p yodirectory/yostuff/mastuffinyostuff )
und das ist es. 777 Dauerwellen für Yostuff, Mastuffinyostuff und Yodirectory.
mkdir temp; chmod 777 temp
ist eine Zeile. Sie können 'temp' zu einer Variablen machen und als Bash-Befehl speichern. Wollen Sie das tun?