Kaip sukurti katalogą ir suteikti leidimą vienoje komandoje

Kaip sukurti katalogą ir suteikti leidimą vienoje komandoje Linux?

Turiu sukurti daug aplankų su visa rezoliucija 777 .

Komandos

 mkdir path/foldername chmod 777 path/foldername 

Nemėgstu kurti ir suteikti leidimus dviejose komandose. Ar galiu tai padaryti vienoje komandoje?

72
26 апр. 26 d. 2011-04-26 08:30 '11, 8:30 val. 2011-04-26 08:30
@ 7 atsakymai

Pagal mkdir žmogaus puslapį ...

 mkdir -m 777 dirname 
159
26 апр. atsakymas pateikiamas alex 26 balandžio. 2011-04-26 08:33 '11 at 8:33 am 2011-04-26 08:33
 install -d -m 0777 /your/dir 
border=0

turėtų duoti jums tai, ko norite. Atminkite, kad kiekvienas vartotojas turi teisę rašyti ir ištrinti failus šiame kataloge.

16
23 апр. Markus W Mahlberg atsakymas, pateiktas balandžio 23 d 2014-04-23 16:15 '14, 16:15, 2014-04-23 16:15

Galite parašyti paprastą apvalkalo scenarijų, pavyzdžiui:

 #!/bin/bash mkdir "$1" chmod 777 "$1" 

Po išsaugojimo ir vykdomojo failo vėliavos galite ją paleisti vietoj mkdir ir chmod:

 ./scriptname path/foldername 

Tačiau alex atsakymas yra daug geriau, nes jis sukuria vieną procesą vietoj trijų. Aš nežinojau apie „ -m parinktį.

6
26 апр. Atsakymas duotas Delan Azabani balandžio 26 d 2011-04-26 08:33 '11 at 8:33 am 2011-04-26 08:33

IMO, tai geriau naudoti install komandą tokiose situacijose. systemd-journald pakartotinai systemd-journald aš stengiausi padaryti systemd-journald .

 install -d -g systemd-journal -m 2755 -v /var/log/journal 
6
06 апр. atsakymas pateikiamas Badi 06 balandžio. 2017-04-06 12:01 '17 at 12:01 pm 2017-04-06 12:01

Jei norite sukurti katalogą ir suteikti leidimus tuo pačiu metu, galite naudoti šią komandą.

 mkdir -m777 path/foldername 
5
16 мая '18 в 16:17 2018-05-16 16:17 atsakė Omerui Gafarui gegužės 16 d. 18 val. 16:17

Tiesiog išplėsti ir patobulinti kai kuriuos pirmiau pateiktus atsakymus:

Pirma, patikrinu GNU Coreutils 8.26 mkdir puslapį - tai suteikia mums šią informaciją apie „-m“ ir „-p“ parinktis (taip pat galima nurodyti kaip -mode = MODE ir - tėvai):

... nustatyti [s] failo režimą (kaip chmod), o ne = rwx - umask

... jei nėra klaidos, jei reikia, sukurkite tėvų katalogus.

Mano nuomone, pareiškimai yra neaiškūs ir neaiškūs. Bet iš esmės tai reiškia, kad galite sukurti katalogą su leidimais, nurodytais „skaitmenine chmod pastaba (aštuntoji), arba galite pereiti„ kitaip “ir naudoti / umask.

Šoninė pastaba: aš sakau „kitaip“, nes umask reikšmė iš tikrųjų yra tai, ką ji skamba - kaukė, paslėpti / ištrinti leidimus, o ne „suteikti“ juos, kaip ir su aštriu žymėjimu chmod.

Galite atlikti komandą, kurią sukūrė umask shell, kad sužinotumėte, kas yra jūsų 3 skaitmenų umask; man tai 022 . Tai reiškia, kad kai šiame aplanke paleidžiu „ mkdir yodirectory (pvz., „Mahome“) ir stat , gaunu tokį išvaizdą:

  755 richard:richard /mahome/yodirectory # permissions user:group what I just made (yodirectory), # (owner,group,others--in that order) where I made it (ie in mahome) # 

Dabar pridėkite šiek tiek daugiau apie šias aštuonių žingsnių rezoliucijas. Kai sukuriate katalogą, „jūsų sistema“ laikosi numatytojo katalogo perms “[kuris taikomas naujiems katalogams (jo vertė turėtų būti 777)] ir užklijuoti„ yo “(u) kaukę, efektyviai slepiant kai kuriuos iš šių perms“. Mano „umask“ yra 022 - dabar, jei „atimame“ 022 iš 777 (techniškai atimtis yra nereikalinga, ne visada teisinga - mes iš tikrųjų išjungiame perms arba užmaskuojame juos) ... mes gauname 755, kaip nurodyta anksčiau (arba „statted“) .

Mes galime praleisti „0“ prieš 3 skaitmenų aštuonkampį (kad jie neturėtų būti 4 skaitmenų), nes mūsų atveju mes nenorėjome (ar net nepaminėjo) jokių „stickybit“, „setuids“ ar „setgids“ (galbūt norėsite juos ištirti beje, jie gali būti naudingi nuo 777). Kitaip tariant, 0777 reiškia (arba lygiaverčiai) 777 (bet 777 nebūtinai atitinka 0777 - nuo 777 metų nustato tik leidimus, o ne setuids, setgids ir kt.)

Dabar, norėdami tai pritaikyti savo klausimui platesne prasme - jau turite kelias galimybes. Visi pirmiau pateikti atsakymai veikia (bent jau dėl mano pagrindinių priežasčių). Tačiau, jei norite sukurti subdirectories (subdirectories) su 777 prieigos teisėmis tuo pačiu metu, galite (arba, greičiausiai) susidurti su anksčiau pateiktais sprendimais. Konkrečiai, jei aš darau tokius dalykus Mahome 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 

Aš gausiu 755 yodirectory ir yostuff , tik 777 mastuffinyostuff . Taigi, atrodo, kad „ umask yra viskas, kas ištrinta „ yodirectory ir „ yostuff ... norint tai pasiekti, galime naudoti subshell:

( umask 000 mkdir -p yodirectory/yostuff/mastuffinyostuff )

ir kad jis yra. 777 permos, skirtos yostuff, mastuffinyostuff ir yodirectory.

3
27 февр. Atsakymas pateikiamas YenForYang 27 vasario mėn. 2017-02-27 10:05 '17 - 10:05 2017-02-27 10:05

Kai katalogas jau yra:

 mkdir -m 777 /path/to/your/dir 

Jei katalogo nėra ir norite sukurti tėvų katalogus:

 mkdir -m 777 -p /parent/dirs/to/create/your/dir 
0
23 янв. Atsakymą pateikė Pedro Trujillo sausio 23 d. 2019-01-23 01:54 '19: 1:54 2019-01-23 01:54

Kiti klausimai apie „ žymes „ arba „ Užduoti klausimą“