Aby rozwinąć i poprawić niektóre z powyższych odpowiedzi:
Najpierw sprawdzę stronę podręcznika mkdir dla GNU Coreutils 8.26 - zawiera ona informacje o opcji '-m' i '-p' (można też podać odpowiednio --mode = TRYB i --parents ):
... ustaw tryb pliku [s] (jak w chmod), a nie a = rwx - umask
... bez błędu, jeśli istnieje, w razie potrzeby utwórz katalogi nadrzędne
Moim zdaniem stwierdzenia są niejasne i niejasne. Ale zasadniczo mówi, że możesz utworzyć katalog z uprawnieniami określonymi przez „chmod notację numeryczną” (ósemki) lub możesz przejść „w drugą stronę” i użyć / your umask.
Uwaga dodatkowa: mówię „w drugą stronę”, ponieważ wartość umask jest dokładnie tym, na co wygląda - maską , ukrywaniem / usuwaniem uprawnień, a nie ich „przyznawaniem”, jak w przypadku numerycznej notacji ósemkowej chmod.
Możesz wykonać polecenie wbudowane w powłokę, umask
aby zobaczyć, jaka jest twoja 3-cyfrowa umask; dla mnie to jest 022
. Oznacza to, że kiedy wykonam mkdir yodirectory
w danym folderze (powiedzmy, mahome) i stat
to, otrzymam wyjście podobne do tego:
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)
#
Teraz, aby dodać trochę więcej o tych ósemkowych uprawnieniach. Kiedy tworzysz katalog, "twój system" bierze domyślne uprawnienia katalogu "[co ma zastosowanie do nowych katalogów (jego wartość powinna 777)] i uderza w maskę yo (u), skutecznie ukrywając niektóre z tych uprawnień". Moja jest umask 022 - teraz jeśli my „odjąć” 022 z 777 (technicznie odjęcie jest oversimplication i nie zawsze poprawne - jesteśmy rzeczywiście wyłączenie trwałej ondulacji lub maskować je ing) ... mamy 755 jak stwierdzono (lub „stat” ) wcześniej.
Możemy pominąć `` 0 '' przed trzycyfrowymi ósemkami (więc nie muszą być czterocyfrowe), ponieważ w naszym przypadku nie chcieliśmy (a raczej nie wspomnieliśmy) o żadnych bitach stickybit, setuidach lub setgidach (możesz zajrzeć do tych, przy okazji, mogą być przydatne, ponieważ zamierzasz 777). Innymi słowy, 0777 implikuje (lub jest równoważne) 777 (ale 777 niekoniecznie jest równoważne 0777 - ponieważ 777 określa tylko uprawnienia, a nie setuids, setgids itp.)
Teraz, aby zastosować to do twojego pytania w szerszym znaczeniu - masz (już) kilka opcji. Wszystkie powyższe odpowiedzi działają (przynajmniej według moich coreutils). Ale możesz (lub prawdopodobnie napotkasz) problemy z powyższymi rozwiązaniami, gdy chcesz stworzyć podkatalogi (katalogi zagnieżdżone) z 777 uprawnieniami naraz. W szczególności, jeśli wykonam następujące czynności w mahome z umaską 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
Otrzymam trwałą 755
na oba yodirectory
i yostuff
tylko 777
na mastuffinyostuff
. Wygląda więc na to, że umask
to wszystko, co zostało uderzone yodirectory
i yostuff
... aby to obejść, możemy użyć podpowłoki:
( umask 000 && mkdir -p yodirectory/yostuff/mastuffinyostuff )
i to wszystko. 777 perms dla yostuff, mastuffinyostuff i yodirectory.
mkdir temp; chmod 777 temp
to jedna linia. Możesz uczynić „temp” zmienną i zapisać ją jako polecenie bash. Czy to jest to, czego szukasz?