15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
16.11.2023

Ubuntu’da Yeni Klasör Nasıl Oluşturulur: Eksiksiz Dizin Yönetimi Kılavuzu

Ubuntu’da yeni bir klasör oluşturmak, öncelikle terminalde mkdir komutuyla yapılır. Temel sözdizimi mkdir folder_name‘dır ve mevcut çalışma konumunuzda anında bir dizin oluşturur. İç içe yapılar için mkdir -p parent/child/grandchild, ara dizinler henüz mevcut olmasa bile tüm yolu tek bir işlemde oluşturur.

Bu kılavuz, temel bilgilerin çok ötesine geçmektedir. Ubuntu’da dizin oluşturmanın her pratik yöntemini kapsar — basit tek klasör oluşturmadan özyinelemeli yapılara, izin odaklı sağlamaya ve gerçek üretim sunucu ortamlarında kullanılan otomasyon hazır betik kalıplarına kadar.

Linux Sunucusunda Uygun Dizin Yapısının Önemi

Herhangi bir Ubuntu sunucusunda dosya sistemi, her işlemin omurgasıdır. Kötü organize edilmiş dizinler zincirleme sorunlara yol açar: bozuk uygulama yolları, yanlış yapılandırılmış izin hiyerarşileri, başarısız yedekleme işleri ve hassas konumlara yerleştirilen dünya yazılabilir dizinlerin neden olduğu güvenlik açıkları.

Dizin yönetimine disiplinli bir yaklaşım doğrudan şunları etkiler:

  • İzin kalıtımı — alt dizinler, açıkça geçersiz kılınmadıkça üst izinleri devralır; bu da başlangıç yapı kararlarını kritik hale getirir
  • Yedekleme kapsamırsync ve tar gibi yedekleme araçları dizin ağaçları üzerinde çalışır, bu nedenle mantıksal gruplama yedekleme karmaşıklığını azaltır
  • Servis yapılandırması — web sunucuları (Apache, Nginx), veritabanları ve uygulama çalışma zamanları öngörülebilir, iyi tanımlanmış dizin yollarına bağlıdır
  • Denetim ve uyumluluk — yapılandırılmış yollar, günlük ilişkilendirmesini ve adli analizi önemli ölçüde hızlandırır

Bir VPS Hosting ortamı veya Dedicated Server yönetiyorsanız, ilk günden tutarlı bir dizin kuralı oluşturmak, sistem büyüdükçe hızla birikim yapan teknik borcu önler.

Ön Koşullar

Aşağıdaki komutlardan herhangi birini çalıştırmadan önce şunları doğrulayın:

  • Bir terminale erişiminiz var (yerel veya SSH aracılığıyla)
  • Kullanıcı hesabınızın hedef konuma yazma izni var
  • Sistem düzeyindeki dizinler için (örneğin /etc/ veya /var/ altında), sudo ayrıcalıklarınız var
  • Ubuntu sürümü: bu komutlar Ubuntu 18.04, 20.04, 22.04 ve 24.04 LTS için evrensel olarak geçerlidir

Mevcut çalışma dizininizi herhangi bir zamanda doğrulamak için şunu çalıştırın:

pwd

Yöntem 1: mkdir ile Temel Dizin Oluşturma

mkdir (make directory) komutu, dizin oluşturmak için standart POSIX yardımcı programıdır. Kurulum gerektirmeksizin her Linux dağıtımında mevcuttur.

Sözdizimi:

mkdir directory_name

Örnek:

mkdir project_files

Bu, mevcut konumunuzda project_files adında bir dizin oluşturur. Komut başarı durumunda çıktı üretmez — bu standart Unix davranışıdır. Oluşturmayı doğrulamak için:

ls -la

Üretimde uyulması gereken adlandırma kuralları:

  • Küçük harf ve alt çizgi veya kısa çizgi kullanın: web_assets, backup-2024
  • Dizin adlarında boşluktan kaçının — bunlar kaçış gerektirirler (mkdir "my folder" veya mkdir my folder) ve birçok kabuk betiğini bozarlar
  • Özel karakterlerden kaçının: &, *, ?, !, | kabuk özel anlamlarına sahiptir ve öngörülemeyen davranışlara neden olur

Yöntem 2: Belirli Bir Mutlak Yolda Dizin Oluşturma

Önce hedef konuma gitmek yerine, tam mutlak yolu doğrudan mkdir‘e iletebilirsiniz. Bu, betiklerde ve otomatik sağlamada tercih edilen yaklaşımdır.

Sözdizimi:

mkdir /full/path/to/new_directory

Örnek:

mkdir /var/www/html/myapp

Önemli kısıtlama: Yoldaki herhangi bir ara dizin zaten mevcut değilse bu komut başarısız olur. Örneğin, /var/www/html/ mevcut değilse, yukarıdaki komut şunu döndürür:

mkdir: cannot create directory '/var/www/html/myapp': No such file or directory

Çözüm, Yöntem 3’te ele alınan -p bayrağıdır.

Göreli yollar kullanmak da eşit derecede geçerlidir ve etkileşimli oturumlarda genellikle daha okunabilirdir:

mkdir ../sibling_directory
mkdir ./subdirectory

Yöntem 3: -p ile İç İçe Dizinleri Özyinelemeli Olarak Oluşturma

-p (parents) bayrağı, mkdir‘deki en işlevsel açısından önemli seçeneklerden biridir. Komuta, belirtilen yoldaki tüm eksik ara dizinleri oluşturmasını ve hedef dizin zaten mevcutsa normalde oluşacak hatayı bastırmasını söyler.

Sözdizimi:

mkdir -p parent_directory/child_directory/grandchild_directory

Örnek:

mkdir -p /var/www/html/myapp/logs/archive

/var/www/html/myapp/ mevcut değilse, bu tek komut tüm zinciri oluşturur: myapp, ardından içinde logs, ardından onun içinde archive.

Kritik üretim kullanım durumu — web sunucusu belge kökleri:

mkdir -p /var/www/vhosts/example.com/{public_html,logs,ssl,tmp}

Bu ayraç genişletme sözdizimi (Yöntem 6’da ayrıntılı olarak ele alınmıştır) -p ile birleştirildiğinde, tek bir komutla yeni sanal ana bilgisayar ortamları sağlamak için standart bir kalıptır.

-p bayrağı aynı zamanda idempotent betiklerdeki hataları da önler. Aynı mkdir -p komutunu iki kez çalıştırırsanız, ikinci çalıştırma hiçbir şey yapmaz ve 0 koduyla temiz bir şekilde çıkar. -p olmadan, ikinci çalıştırma bir hata döndürür ve set -e kullanan (hata durumunda çık) herhangi bir betiği bozar.

Yöntem 4: Aynı Anda Birden Fazla Dizin Oluşturma

mkdir birden fazla argüman kabul eder ve tek bir çağrıda belirtilen tüm dizinleri oluşturur.

Sözdizimi:

mkdir dir1 dir2 dir3

Örnek:

mkdir assets uploads cache sessions

Bu, mevcut konumda dört ayrı dizin oluşturur. Tüm dizinler aynı düzeyde oluşturulur — bu iç içe bir yapı değildir.

Mutlak yollarla birleştirme:

mkdir /srv/app/modules /srv/app/config /srv/app/data

Birden fazla iç içe yol için -p ile birleştirme:

mkdir -p /srv/project/frontend/src /srv/project/backend/src /srv/project/docs

Bu, dağıtımdan önce yeni bir uygulama dizin yapısı iskelet oluştururken özellikle kullanışlıdır.

Yöntem 5: -m Kullanarak Belirli İzinlerle Dizin Oluşturma

Varsayılan olarak, mkdir sistemin umask değerine göre izinler uygular. Çoğu Ubuntu sisteminde varsayılan umask 0022‘dır; bu, yeni dizinlerin 755 izinleri aldığı anlamına gelir (sahip: okuma/yazma/çalıştırma; grup: okuma/çalıştırma; diğerleri: okuma/çalıştırma).

Birçok sunucu senaryosunda varsayılan izinler ya çok izin verici ya da çok kısıtlayıcıdır. -m bayrağı, oluşturma sırasında sekizli gösterim kullanarak tam izinleri ayarlamanıza olanak tanır.

Sözdizimi:

mkdir -m octal_mode directory_name

Yaygın izin kalıpları:

Sekizli ModSembolikTipik Kullanım Durumu
700rwx------Özel kullanıcı verileri, SSH anahtar dizinleri
750rwxr-x---Bir grupla paylaşılan uygulama dizinleri
755rwxr-xr-xGenel web belge kökleri
770rwxrwx---Paylaşılan ekip dizinleri
777rwxrwxrwxGeçici çalışma alanı (üretimde kullanmaktan kaçının)

Örnek — SSH anahtarları için güvenli dizin oluşturma:

mkdir -m 700 ~/.ssh

Örnek — doğru izinlerle web kökü oluşturma:

mkdir -m 755 /var/www/html/newsite

-m ve -p birleştirme:

mkdir -p -m 750 /srv/app/config/secrets

-p kullanıldığında, modun yalnızca yoldaki son dizine uygulandığını, oluşturulan ara dizinlere uygulanmadığını unutmayın. Ara dizinler varsayılan umask tabanlı izinleri alır. Tüm düzeyler üzerinde hassas kontrol gerekiyorsa, her düzeyi açık -m bayraklarıyla ayrı ayrı oluşturun veya sonradan chmod kullanın.

Yöntem 6: Karmaşık Dizin Ağaçları için Ayraç Genişletme

Ayraç genişletme, tek bir kalıptan birden fazla argüman üreten bir Bash kabuğu özelliğidir — mkdir seçeneği değildir. mkdir -p ile birleştirildiğinde, karmaşık dizin hiyerarşileri oluşturmanın en verimli yoludur.

Temel ayraç genişletme:

mkdir -p project/{src,tests,docs,build}

Bu şu şekilde genişler:

mkdir -p project/src project/tests project/docs project/build

Çok düzeyli ayraç genişletme:

mkdir -p app/{frontend/{components,pages,styles},backend/{controllers,models,routes},shared/utils}

Bu aşağıdaki yapıyı oluşturur:

app/
├── frontend/
│   ├── components/
│   ├── pages/
│   └── styles/
├── backend/
│   ├── controllers/
│   ├── models/
│   └── routes/
└── shared/
    └── utils/

Bu kalıp, yeni uygulama depoları başlatırken veya yeni bir VPS with cPanel veya bare-metal sunucuda uygulama dizinleri sağlarken standart uygulamadır.

Yöntem 7: Ubuntu GUI (Dosyalar Uygulaması) Aracılığıyla Dizin Oluşturma

Masaüstü Ubuntu kurulumları veya uzak masaüstü oturumları için GNOME Dosyalar uygulaması (Nautilus) grafiksel bir yöntem sağlar.

Adımlar:

  1. Etkinlikler menüsünden veya dock’tan Dosyalar uygulamasını açın
  2. Yeni klasörün istediğiniz üst dizine gidin
  3. Dizin içindeki boş bir alana sağ tıklayın
  4. Bağlam menüsünden Yeni Klasör‘ü seçin
  5. İstenen klasör adını yazın ve Enter‘a basın

Klavye kısayolu: Nautilus’ta Ctrl+Shift+N, sağ tıklama menüsü kullanmadan anında yeni bir klasör oluşturur.

GUI yaklaşımının sınırlamaları:

  • Oluşturma sırasında özel izinler ayarlanamaz — terminalde veya dosya özelliklerinde takip eden bir işlem gerektirir
  • Tek bir işlemde özyinelemeli iç içe yapılar oluşturulamaz
  • Başsız sunucu ortamlarında mevcut değildir (üretim Ubuntu sunucularının büyük çoğunluğu masaüstü ortamı olmadan çalışır)

Ciddi sunucu yönetimi çalışmaları için komut satırı yöntemleri her zaman tercih edilir.

Yöntem 8: Otomasyon için Dizin Oluşturmayı Betikleme

Gerçek dünya sunucu yönetiminde, dizinler nadiren tek tek manuel olarak oluşturulur. Sağlama betikleri, dağıtım ardışık düzenleri ve yapılandırma yönetimi araçlarının tümü otomatik dizin oluşturmaya dayanır.

Temel kabuk betiği örneği:

#!/bin/bash
set -e

BASE_DIR="/var/www/vhosts"
DOMAIN="example.com"

directories=(
    "$BASE_DIR/$DOMAIN/public_html"
    "$BASE_DIR/$DOMAIN/logs"
    "$BASE_DIR/$DOMAIN/ssl"
    "$BASE_DIR/$DOMAIN/tmp"
    "$BASE_DIR/$DOMAIN/backup"
)

for dir in "${directories[@]}"; do
    mkdir -p "$dir"
    echo "Created: $dir"
done

# Set ownership to web server user
chown -R www-data:www-data "$BASE_DIR/$DOMAIN"
chmod -R 755 "$BASE_DIR/$DOMAIN"

echo "Directory structure for $DOMAIN provisioned successfully."

Temel betik uygulamaları:

  • Herhangi bir hatada iptal etmek için her zaman set -e kullanın
  • Boşluklu yolları güvenli bir şekilde işlemek için tüm değişkenleri alıntılayın ("$dir")
  • Oluşturmanın hemen ardından izinlerin doğru olduğundan emin olmak için aynı betikte mkdir -p‘i chown ve chmod ile birleştirin
  • Betikleri okunabilir ve sürdürülebilir tutmak için dizin listeleri için diziler kullanın

Bu yaklaşım, birden fazla sanal ana bilgisayar yönetirken, uygulamaları ortamlar arasında dağıtırken veya Ansible veya Bash tabanlı sağlama betikleri gibi araçlarla sunucu kurulumunu otomatikleştirirken önemlidir.

Karşılaştırma: mkdir Seçenekleri ve Kullanım Durumları

KomutAra Dizinler Oluştururİzinleri AyarlarBirden Fazla Dizinİdempotent
mkdir dirHayırHayır (umask kullanır)HayırHayır
mkdir -p path/to/dirEvetHayır (umask kullanır)HayırEvet
mkdir -m 755 dirHayırEvetHayırHayır
mkdir -p -m 750 path/dirEvetEvet (yalnızca son dizin)HayırEvet
mkdir dir1 dir2 dir3HayırHayır (umask kullanır)EvetHayır
mkdir -p {a,b,c}/subEvetHayır (umask kullanır)EvetEvet

Yaygın Hatalar ve Nasıl Düzeltilir

Hata: Permission denied

mkdir: cannot create directory '/etc/myapp': Permission denied

Neden: Yükseltilmiş ayrıcalıklar olmadan sistem tarafından sahip olunan bir dizine yazmaya çalışıyorsunuz.

Düzeltme: sudo ekleyin:

sudo mkdir /etc/myapp

Hata: No such file or directory

mkdir: cannot create directory '/srv/app/config': No such file or directory

Neden: Yoldaki bir veya daha fazla ara dizin mevcut değil.

Düzeltme: -p bayrağını kullanın:

mkdir -p /srv/app/config

Hata: File exists

mkdir: cannot create directory 'mydir': File exists

Neden: Bu adda bir dizin veya dosya zaten mevcut.

Düzeltme: Mevcut yol bir dizin olduğunda bu hatayı bastırmak için -p kullanın veya farklı bir ad seçin.

Betiklerde sessiz başarısızlık: mkdir başarısız olursa ve betiğiniz set -e kullanmıyor veya çıkış kodlarını kontrol etmiyorsa, sonraki işlemler mevcut olmayan bir yol üzerinde devam edebilir ve öngörülemeyen başarısızlıklara neden olabilir. Kritik dizin oluşturmayı her zaman doğrulayın:

mkdir -p /srv/app/data || { echo "Failed to create data directory"; exit 1; }

Dizin Oluşturma için Güvenlik Değerlendirmeleri

Dizin izinleri, sunucu güvenliğinde birinci savunma hattıdır. Birçok yüksek etkili güvenlik açığı doğrudan yanlış dizin izinlerinden kaynaklanır:

  • Dünya yazılabilir dizinler (777), sistemdeki herhangi bir kullanıcının dosya yazmasına, değiştirmesine veya silmesine izin verir — paylaşımlı barındırma veya çok kullanıcılı sunucularda kritik bir risk
  • Web’e yönelik dizinlerdeki yanlış sahiplik, web uygulama açıklarının amaçlanan belge kökü dışına kötü amaçlı dosyalar yazmasına izin verebilir
  • Paylaşılan dizinlerdeki Yapışkan bit (chmod +t) (/tmp gibi), kullanıcıların başkalarına ait dosyaları silmesini engeller — paylaşılan yazılabilir dizinlerde her zaman bunu ayarlayın
  • Dizinlerdeki SetGID biti, yeni dosyaların oluşturan kullanıcının birincil grubu yerine dizinin grubunu devralmasını sağlar — işbirlikçi proje dizinleri için kullanışlıdır

Örnek — güvenli paylaşımlı proje dizini:

mkdir -p /srv/shared/project
chown root:developers /srv/shared/project
chmod 2775 /srv/shared/project  # SetGID + rwxrwxr-x

Web uygulamaları, SSL güvenlikli alan adları veya e-posta hizmetleri barındırırken, uygun dizin izinleri SSL Certificates yapılandırmanızın ve Email Hosting kurulumunuzun güvenlik duruşundan ayrılamaz.

Dizin Oluşturmayı Doğrulama

Dizinler oluşturduktan sonra, bağımlı işlemlere geçmeden önce her zaman sonucu doğrulayın.

Ayrıntılı izinlerle listele:

ls -la /path/to/parent/

Belirli bir dizinin var olduğunu doğrula (betiklerde kullanışlı):

[ -d /srv/app/config ] && echo "Directory exists" || echo "Directory missing"

Tam ağaç yapısını görüntüle (tree paketi gerektirir):

sudo apt install tree -y
tree /srv/app/

İnode kullanımını kontrol et — çok sayıda küçük dosya içeren sunucularda, disk alanı mevcut olsa bile inode tükenmesi dizin oluşturmayı engelleyebilir:

df -i /srv/

İnode kullanımı %100’e yakınsa, mevcut disk alanından bağımsız olarak yeni dizinler veya dosyalar oluşturamazsınız. Bu, posta sunucuları veya PHP oturum dizinleri gibi çok sayıda küçük dosya barındıran sunucularda yaygın bir üretim sorunudur.

Pratik Karar Matrisi: Hangi Yöntemi Kullanmalı

SenaryoÖnerilen Komut
Tek dizin, etkileşimli oturummkdir dirname
Bilinen mutlak yolda dizinmkdir /full/path/dirname
İç içe yol, bazı üstler mevcut olmayabilirmkdir -p /full/nested/path
Aynı anda birden fazla kardeş dizinmkdir dir1 dir2 dir3
Tek komutta karmaşık çok düzeyli ağaçmkdir -p root/{a,b,c}/{sub1,sub2}
Varsayılan dışı izinlerle dizinmkdir -m 750 dirname
Otomatik sağlama betiğiSırayla mkdir -p ile chown/chmod
İdempotent dağıtım ardışık düzeni adımımkdir -p (yeniden çalıştırmak güvenli)

Temel Teknik Çıkarımlar

  • mkdir -p, herhangi bir betiklenmiş veya otomatik dizin oluşturma için en güvenli varsayılandır — idempotent’tir ve eksik ara yolları işler
  • Üretim dizinlerinde 777 izinleri kullanmayın; genel yollar için 755, hassas veriler için 750 veya 700 tercih edin
  • -m‘deki mkdir bayrağı, -p ile kullanıldığında yalnızca son dizinde izinleri ayarlar — tam kontrol için chmod -R veya düzey başına mkdir çağrıları kullanın
  • Ayraç genişletme bir Bash özelliğidir, mkdir özelliği değildir — kabuk Bash olmadıkça /bin/sh betiklerinde çalışmaz
  • Toplu dizin oluşturmadan önce yüksek yoğunluklu dosya sistemlerinde inode kullanılabilirliğini her zaman kontrol edin (df -i)
  • Dizinlerin yanlış sahiplikle var olduğu bir pencereden kaçınmak için sağlama betiklerinde dizin oluşturmayı anında chown atamasıyla birleştirin
  • VPS Control Panels ortamlarında, web sunucusu kullanıcıları (genellikle www-data veya nginx) belge kökü yolundaki her dizinde çalıştırma iznine sahip olmalıdır — yalnızca son dizinde değil

SSS

mkdir folder ve mkdir -p folder arasındaki fark nedir?

mkdir folder tek bir dizin oluşturur ve yolun herhangi bir bölümü mevcut değilse veya dizin zaten mevcutsa başarısız olur. mkdir -p folder tüm eksik ara dizinleri oluşturur ve hedef zaten mevcutsa hata vermeden sessizce çıkar; bu da onu betikler ve tekrarlanan çalıştırmalar için güvenli kılar.

mkdir adında boşluk olan bir dizin oluşturabilir mi?

Evet. Adı tırnak içine alın: mkdir "my project folder" veya boşlukları kaçış karakteriyle belirtin: mkdir my project folder. Ancak, dizin adlarındaki boşluklar sunucularda kesinlikle önerilmez; çünkü sonraki her komutta kaçış gerektirirler ve birçok kabuk betiğini ve uygulama yapılandırmasını bozarlar.

sudo ile bile mkdir neden “İzin reddedildi” hatasıyla başarısız oluyor?

Bu genellikle hedef dosya sisteminin salt okunur olarak bağlandığında, SELinux veya AppArmor politikalarının o yola yazmaları kısıtladığında veya yolun sunucu tarafı kısıtlamalarına sahip bir ağ dosya sisteminde olduğunda gerçekleşir. Bağlama seçeneklerini mount | grep /target/path ile kontrol edin ve AppArmor günlüklerini sudo aa-status ile inceleyin.

Bir dizin oluşturup hemen sahibini ve grubunu nasıl ayarlarım?

mkdir sahipliği ayarlamaz — hemen ardından chown kullanın: mkdir -p /srv/app && chown www-data:www-data /srv/app. Tek bir ardışık düzende: install -d -m 755 -o www-data -g www-data /srv/appinstall komutu tek adımda sahip, grup ve mod ile dizinler oluşturur.

Birden fazla yeni düzeyle mkdir -p kullanıldığında izinlere ne olur?

Yalnızca son (en derin) dizin, -m tarafından belirtilen modu alır. Yeni oluşturulan tüm ara dizinler, mevcut umask’tan türetilen izinleri alır. Tüm düzeylerde tutarlı izinler gerekiyorsa, ya her düzeyi açık -m bayraklarıyla ayrı ayrı oluşturun ya da tam yol oluşturulduktan sonra chmod -R uygulayın.

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın