Sekadar untuk memperluas dan meningkatkan beberapa jawaban di atas:
Pertama, saya akan memeriksa halaman manual mkdir untuk GNU Coreutils 8.26 - ini memberi kita informasi ini tentang opsi '-m' dan '-p' (juga dapat diberikan sebagai --mode = MODE dan --parents, masing-masing ):
... atur mode file (seperti dalam chmod), bukan a = rwx - umask
... tidak ada error jika sudah ada, buat direktori induk sesuai kebutuhan
Pernyataan tersebut tidak jelas dan tidak jelas menurut saya. Tetapi pada dasarnya, ia mengatakan bahwa Anda dapat membuat direktori dengan izin yang ditentukan oleh "notasi numerik chmod" (oktal) atau Anda dapat menggunakan "cara lain" dan menggunakan / umask Anda.
Catatan tambahan: Saya mengatakan "dengan cara lain" karena nilai umask sebenarnya persis seperti namanya - topeng , menyembunyikan / menghapus izin daripada "memberikan" mereka seperti dengan notasi oktal numerik chmod.
Anda dapat menjalankan perintah shell-builtin umask
untuk melihat umask 3-digit Anda; bagi saya, itu 022
. Ini berarti bahwa ketika saya mengeksekusi mkdir yodirectory
di folder tertentu (katakanlah, mahome) dan stat
itu, saya akan mendapatkan beberapa keluaran yang menyerupai ini:
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)
#
Sekarang, untuk menambahkan sedikit lagi tentang izin oktal tersebut. Ketika Anda membuat sebuah direktori, "sistem Anda" mengambil perms direktori default Anda '[yang berlaku untuk direktori baru (nilainya harus 777)] dan menampar di topeng yo (u), secara efektif menyembunyikan beberapa perms'. Umask saya adalah 022 - sekarang jika kita "mengurangi" 022 dari 777 (secara teknis menguranginya merupakan penyederhanaan yang berlebihan dan tidak selalu benar - kita sebenarnya mematikan perm atau mask mereka) ... kita mendapatkan 755 seperti yang dinyatakan (atau "statted" ) sebelumnya.
Kita dapat menghilangkan '0' di depan 3-digit oktal (jadi tidak harus 4 digit) karena dalam kasus kita, kita tidak ingin (atau lebih tepatnya tidak menyebutkan) stickybits, setuids atau setgids (Anda mungkin ingin memeriksanya, btw, mungkin berguna karena Anda akan 777). Jadi dengan kata lain, 0777 menyiratkan (atau setara dengan) 777 (tetapi 777 belum tentu setara dengan 0777 - karena 777 hanya menentukan izin, bukan setuids, setgids, dll.)
Sekarang, untuk menerapkan ini pada pertanyaan Anda dalam arti yang lebih luas - Anda (sudah) memiliki beberapa opsi. Semua jawaban di atas berfungsi (setidaknya menurut coreutils saya). Tetapi Anda mungkin (atau kemungkinan besar) mengalami masalah dengan solusi di atas saat Anda ingin membuat sub direktori (direktori bersarang) dengan 777 izin sekaligus. Secara khusus, jika saya melakukan hal berikut di mahome dengan 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
Saya akan mendapatkan izin 755
untuk keduanya yodirectory
dan yostuff
, dengan hanya 777
izin untuk mastuffinyostuff
. Jadi tampaknya umask
hanya itu yang ditampar yodirectory
dan yostuff
... untuk menyiasatinya kita dapat menggunakan subkulit:
( umask 000 && mkdir -p yodirectory/yostuff/mastuffinyostuff )
dan hanya itu. 777 izin untuk yostuff, mastuffinyostuff, dan yodirectory.
mkdir temp; chmod 777 temp
adalah satu baris. Anda dapat membuat 'temp' sebagai variabel dan menyimpannya sebagai perintah bash. Apakah ini yang ingin Anda lakukan?