Sadece yukarıdaki cevaplardan bazılarını genişletmek ve geliştirmek için:
İlk olarak, GNU Coreutils 8.26 için mkdir man sayfasını kontrol edeceğim - bize '-m' ve '-p' seçenekleri hakkında bu bilgiyi verir (sırasıyla --mode = MODE ve --parents olarak da verilebilir. ):
... [s] dosya modunu ayarla (chmod'daki gibi), a = rwx - umask değil
... varsa hata yok, gerektiği gibi üst dizinleri yapın
Bence ifadeler belirsiz ve net değil. Ama temelde, dizini "chmod sayısal gösterimi" (sekizli) ile belirtilen izinlerle yapabileceğinizi veya "diğer yöne" gidip a / your umask kullanabileceğinizi söylüyor.
Yan not: "Diğer yol" diyorum çünkü umask değeri aslında tam olarak göründüğü gibi - chmod'un sayısal sekizlik gösteriminde olduğu gibi izinleri "vermek" yerine gizlemek / kaldırmak bir maske .
umask
3 basamaklı umask'inizin ne olduğunu görmek için kabuk yerleşik komutunu çalıştırabilirsiniz ; benim için bu 022
. Bu, mkdir yodirectory
belirli bir klasörde çalıştırdığımda (mesela mahome) ve stat
bunu, buna benzer bir çıktı alacağım anlamına gelir :
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)
#
Şimdi, bu sekizlik izinler hakkında biraz daha ekleyelim. Bir dizin oluşturduğunuzda, "sisteminiz" varsayılan dizin izinlerinizi alır '[ yeni dizinler için geçerlidir (değeri 777 olmalıdır)] ve yo (u) maskesine tokat atarak bu izinlerin bazılarını etkili bir şekilde gizler'. Benim Umask 022 - biz 777 den 022 "çıkarma" Şimdi eğer (teknik olarak çıkarılmasıyla bir oversimplication ve her zaman doğrudur - biz aslında perma kapatarak veya maske bunları ing) "statted" belirtilen (ya ettikçe ... 755 olsun ) daha erken.
Bizim durumumuzda herhangi bir yapışkan bit, setuid veya setgid istemediğimizden (veya daha doğrusu bahsetmediğimizden) 3 basamaklı oktalların önündeki '0'ı atlayabiliriz (bu nedenle 4 basamaklı olmaları gerekmez) (bunlara bakmak isteyebilirsiniz, btw, 777'ye gittiğiniz için faydalı olabilirler). Diğer bir deyişle, 0777, 777'yi ima eder (veya ona eşdeğerdir) (ancak 777 mutlaka 0777'ye eşdeğer değildir - çünkü 777 sadece izinleri belirtir, setuids, setgids, vb.)
Şimdi, bunu sorunuza daha geniş anlamda uygulamak için - birkaç seçeneğiniz var (zaten) var. Yukarıdaki tüm cevaplar işe yarar (en azından benim temel bilgilerime göre). Ancak aynı anda 777 izne sahip alt dizinler (iç içe dizinler) oluşturmak istediğinizde yukarıdaki çözümlerle ilgili sorunlarla karşılaşabilirsiniz (veya büyük olasılıkla) . Özellikle, mahome'de 022 umask ile aşağıdakileri yaparsam:
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
Her 755
ikisi için de izin alacağım yodirectory
ve yostuff
sadece 777
izinlerle mastuffinyostuff
. Görünüşe göre umask
üzerine tokat atılan tek şey bu yodirectory
ve yostuff
... bunun üstesinden gelmek için bir alt kabuk kullanabiliriz:
( umask 000 && mkdir -p yodirectory/yostuff/mastuffinyostuff )
ve bu kadar. Yostuff, mastuffinyostuff ve yodirectory için 777 perm.
mkdir temp; chmod 777 temp
bir satırdır. Bir değişken 'temp' yapabilir ve onu bir bash komutu olarak kaydedebilirsiniz. Yapmak istediğin bu mu?