Perintah mkdir Linux: direktori induk, izin, dan umask
Perintah mkdir membuat direktori baru. Gunakan -p untuk membuat direktori induk yang belum ada sekaligus menerima direktori yang sudah tersedia; gunakan -m bila direktori baru yang Anda sebutkan memerlukan mode izin tertentu.
Contoh-contoh menggunakan perilaku GNU Coreutils. Periksa mkdir --help, man mkdir, dan dokumentasi distribusi Anda ketika portabilitas atau opsi spesifik versi menjadi penting.
Apa Itu Perintah mkdir?
mkdir membuat direktori dengan nama yang ditentukan. Secara default, perintah ini gagal jika jalur induk hilang atau jika nama yang diminta sudah ada. Opsi -p membuat induk yang hilang dan menerima direktori yang sudah ada.
Sintaks Dasar
mkdir [OPSI]... DIREKTORI...
Kutip jalur yang mengandung spasi. Pada GNU, mkdir -- -arsip membuat direktori bernama -arsip tanpa menafsirkannya sebagai opsi. Gunakan mkdir --version untuk melihat versi; beberapa opsi GNU berbeda dari implementasi lain.
Penggunaan mkdir Dasar
Buat satu direktori
Mulailah di direktori latihan baru yang dapat Anda tulisi, misalnya masuk dengan cd ke direktori hasil mktemp -d. logs dibuat relatif terhadap direktori kerja, sedangkan /srv/myapp memakai jalur absolut. Contoh kedua memerlukan /srv yang sudah ada dan dapat ditulisi; sesuaikan ke direktori milik Anda untuk latihan. Nama tujuan belum boleh ada pada contoh tanpa -p.
mkdir logs
mkdir /srv/myapp
Buat beberapa direktori
Setiap jalur adalah operand terpisah. Gunakan tanda kutip untuk nama yang mengandung spasi.
mkdir src tests docs
mkdir 'project files'
Buat direktori induk yang hilang
Opsi -p membangun hierarki yang diperlukan dan tidak menganggap direktori yang sudah ada sebagai kesalahan. Nama yang ditempati file biasa tetap menyebabkan kegagalan. Izin direktori lama tidak diubah, sehingga keberhasilan -p bukan jaminan bahwa pemilik dan izinnya sesuai kebutuhan aplikasi.
mkdir -p project/src/components
mkdir -p /srv/myapp/{bin,config,logs}
Bentuk {bin,config,logs} diperluas oleh Bash menjadi tiga jalur sebelum mkdir dijalankan; fitur ini bukan bagian dari mkdir dan tidak tersedia pada semua shell POSIX. Bentuk portabelnya adalah mkdir -p /srv/myapp/bin /srv/myapp/config /srv/myapp/logs. Semua jalur tetap memerlukan izin pembuatan yang sesuai.
Memeriksa Jalur yang Dibuat
mkdir biasanya tidak mencetak apa pun saat berhasil. Untuk contoh berikut, gunakan nama demo-dir yang belum ada agar keluaran hanya berisi dua direktori latihan tersebut.
mkdir -p demo-dir/logs
find demo-dir -type d
Contoh output:
demo-dir
demo-dir/logs
Periksa mode aktual dengan stat -c '%a %n' demo-dir demo-dir/logs. Untuk rincian pemilik dan jenis file, lihat panduan stat untuk metadata file. Dalam skrip, periksa status mkdir sebelum menjalankan langkah berikutnya; misalnya mkdir -p hasil/logs && stat hasil/logs. Jika ada kesalahan pada beberapa operand, direktori yang diproses lebih dahulu mungkin sudah dibuat: operasi ini bukan transaksi yang otomatis dibatalkan.
Opsi utama
| Opsi | Tujuan |
|---|---|
-p, --parents |
Buat direktori induk yang hilang dan abaikan direktori yang sudah ada. |
-m MODE |
Tetapkan mode pada direktori baru yang secara eksplisit dinamai. |
-v |
Cetak setiap direktori yang dibuat. |
-Z |
Terapkan konteks SELinux default jika didukung. |
--context=CONTEXT |
Tetapkan konteks keamanan tertentu pada sistem yang didukung. |
Security-Enhanced Linux (SELinux) memakai label atau konteks keamanan selain mode izin biasa. Opsi -Z dan --context bergantung pada dukungan sistem dan kebijakannya; keduanya tidak menggantikan -m. Untuk skrip lintas sistem, periksa dukungan setiap opsi GNU pada platform tujuan.
Contoh praktis
Buat direktori dengan mode
Mode memakai notasi numerik atau simbolik seperti chmod. Pada mode biasa 750, pemilik memperoleh baca, tulis, dan penelusuran (rwx), grup memperoleh baca dan penelusuran (r-x), sedangkan pengguna lain tidak memperoleh izin. Bentuk simbolik berikut memberikan rwx kepada pemilik saja.
mkdir -m 750 private-data
mkdir -m u=rwx,go= project-secret
Gunakan nama yang belum ada, lalu periksa stat -c '%a %n' private-data project-secret. Pada Linux dengan izin Unix biasa, bagian mode akses diharapkan 750 dan 700. Periksa juga pemilik, grup, dan kebijakan tambahan; mode itu tidak mengubah siapa pemilik direktori induk.
Kontrol izin pada direktori induk
Pada mkdir -p -m 750 a/b/c, -m berlaku untuk direktori akhir c yang baru dibuat, bukan semua induknya. umask adalah mask proses yang membatasi izin awal: tanpa daftar kontrol akses (ACL) default atau bit khusus yang diwariskan, mask 027 membuang izin tulis grup dan seluruh izin pengguna lain dari dasar 777, sehingga menghasilkan mode akses 750.
Untuk contoh ini, pastikan app belum ada di direktori latihan Anda. Subshell membatasi perubahan umask pada perintah di dalamnya. Langkah chmod berikut hanya menyebut tiga direktori latihan yang diketahui dan baru dijalankan jika pembuatan berhasil.
( umask 027; mkdir -p app/cache/data ) &&
chmod 750 app app/cache app/cache/data
Periksa dengan stat -c '%a %n' app app/cache app/cache/data. GNU -p memberi induk baru izin tulis dan penelusuran untuk pemilik agar pembuatan anak dapat dilanjutkan, sehingga mask yang menghapus izin pemilik itu pun tidak boleh dianggap berlaku mentah pada semua induk. Direktori lama yang dilewati -p tetap mempertahankan mode semula. Untuk mengubah direktori lama, catat izinnya lebih dahulu dan batasi chmod pada jalur yang memang Anda kelola.
Verifikasi hasilnya
-v menampilkan setiap direktori yang benar-benar dibuat, termasuk induk dengan -p. Jalankan ulang contoh untuk melihat bahwa direktori yang sudah ada tidak dibuat kembali. Baris stat menampilkan mode simbolik, pemilik, grup, dan nama.
mkdir -pv deploy/releases/current &&
stat -c '%A %U:%G %n' deploy deploy/releases deploy/releases/current
mkdir dan Perintah Terkait
| Perintah atau metode | Peran utama | Penggunaan yang sesuai |
|---|---|---|
mkdir |
Buat direktori biasa | Ruang kerja dan pohon direktori |
install -d |
Buat direktori dan atur atribut | Instalasi dan penyebaran |
rmdir |
Hapus direktori kosong | Pembersihan aman jalur kosong |
mktemp -d |
Buat direktori sementara dengan nama yang sulit ditebak | Ruang kerja skrip sementara |
Perhatian Penting
-p juga menerima jalur yang salah ketik
Kesalahan ejaan dapat menjadi direktori induk baru alih-alih kegagalan langsung. Validasi jalur dan variabel sistem penting terlebih dahulu.
Izin default bergantung pada umask
Tanpa -m, mode dasar dipengaruhi umask. Pada Linux, daftar kontrol akses (ACL) default dan pewarisan grup atau bit set-group-ID dari induk juga dapat memengaruhi hasil. Karena itu, angka 750 pada latihan bukan jaminan umum untuk setiap sistem file. Periksa mode serta pemilik dan grup; bila direktori memakai ACL, periksa juga getfacl jika tersedia.
Pembuatan bergantung pada izin induk
Membuat anak memerlukan izin tulis dan penelusuran pada direktori induknya, serta izin penelusuran pada komponen sebelumnya. Pada direktori, izin x berarti dapat menelusuri nama, bukan menjalankan file. Jika muncul kesalahan izin, periksa seluruh jalur, kepemilikan, kebijakan keamanan, dan apakah sistem file hanya-baca. Kesalahan ruang atau kuota juga dapat menggagalkan pembuatan.
FAQ
Bagaimana cara membuat semua direktori induk yang hilang?
Gunakan mkdir -p PARENT/CHILD/DIRECTORY.
Bagaimana saya bisa menghindari kesalahan ketika direktori sudah ada?
Gunakan -p. Itu masih gagal jika jalur ditempati oleh sesuatu yang bukan direktori.
Apakah mkdir -m menerapkan mode yang sama pada induk yang dibuat dengan -p?
Tidak. -m tidak mengatur induk yang dibuat otomatis oleh -p; gunakan umask yang sesuai dan periksa hasilnya. Mode direktori yang sudah ada juga tidak diubah oleh -p.
Haruskah saya menggunakan mkdir untuk direktori sementara yang aman?
Gunakan mktemp -d ketika nama sementara yang unik dan tidak terduga diperlukan.
Dokumentasi resmi
Referensi perintah Linux menurut tugas (bahasa Inggris) memberi konteks perintah pengelolaan file lain.




