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ı —
rsyncvetargibi 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),sudoayrı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:
pwdYö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_filesBu, 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"veyamkdir 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 ./subdirectoryYö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 sessionsBu, 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/dataBirden fazla iç içe yol için -p ile birleştirme:
mkdir -p /srv/project/frontend/src /srv/project/backend/src /srv/project/docsBu, 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_nameYaygın izin kalıpları:
| Sekizli Mod | Sembolik | Tipik Kullanım Durumu |
|---|---|---|
700 | rwx------ | Özel kullanıcı verileri, SSH anahtar dizinleri |
750 | rwxr-x--- | Bir grupla paylaşılan uygulama dizinleri |
755 | rwxr-xr-x | Genel web belge kökleri |
770 | rwxrwx--- | Paylaşılan ekip dizinleri |
777 | rwxrwxrwx | Geç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:
- Etkinlikler menüsünden veya dock’tan Dosyalar uygulamasını açın
- Yeni klasörün istediğiniz üst dizine gidin
- Dizin içindeki boş bir alana sağ tıklayın
- Bağlam menüsünden Yeni Klasör‘ü seçin
- İ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 -ekullanı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‘ichownvechmodile 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ı
| Komut | Ara Dizinler Oluşturur | İzinleri Ayarlar | Birden Fazla Dizin | İdempotent |
|---|---|---|---|---|
mkdir dir | Hayır | Hayır (umask kullanır) | Hayır | Hayır |
mkdir -p path/to/dir | Evet | Hayır (umask kullanır) | Hayır | Evet |
mkdir -m 755 dir | Hayır | Evet | Hayır | Hayır |
mkdir -p -m 750 path/dir | Evet | Evet (yalnızca son dizin) | Hayır | Evet |
mkdir dir1 dir2 dir3 | Hayır | Hayır (umask kullanır) | Evet | Hayır |
mkdir -p {a,b,c}/sub | Evet | Hayır (umask kullanır) | Evet | Evet |
Yaygın Hatalar ve Nasıl Düzeltilir
Hata: Permission denied
mkdir: cannot create directory '/etc/myapp': Permission deniedNeden: Yükseltilmiş ayrıcalıklar olmadan sistem tarafından sahip olunan bir dizine yazmaya çalışıyorsunuz.
Düzeltme: sudo ekleyin:
sudo mkdir /etc/myappHata: No such file or directory
mkdir: cannot create directory '/srv/app/config': No such file or directoryNeden: Yoldaki bir veya daha fazla ara dizin mevcut değil.
Düzeltme: -p bayrağını kullanın:
mkdir -p /srv/app/configHata: File exists
mkdir: cannot create directory 'mydir': File existsNeden: 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) (/tmpgibi), 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-xWeb 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 oturum | mkdir dirname |
| Bilinen mutlak yolda dizin | mkdir /full/path/dirname |
| İç içe yol, bazı üstler mevcut olmayabilir | mkdir -p /full/nested/path |
| Aynı anda birden fazla kardeş dizin | mkdir dir1 dir2 dir3 |
| Tek komutta karmaşık çok düzeyli ağaç | mkdir -p root/{a,b,c}/{sub1,sub2} |
| Varsayılan dışı izinlerle dizin | mkdir -m 750 dirname |
| Otomatik sağlama betiği | Sı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
777izinleri kullanmayın; genel yollar için755, hassas veriler için750veya700tercih edin -m‘dekimkdirbayrağı,-pile kullanıldığında yalnızca son dizinde izinleri ayarlar — tam kontrol içinchmod -Rveya düzey başınamkdirçağrıları kullanın- Ayraç genişletme bir Bash özelliğidir,
mkdirözelliği değildir — kabuk Bash olmadıkça/bin/shbetiklerinde ç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
chownatamasıyla birleştirin - VPS Control Panels ortamlarında, web sunucusu kullanıcıları (genellikle
www-dataveyanginx) 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/app — install 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.
