LİNUX TEMEL KOMUTLAR VE DOSYA İZİNLERİ: PRATİK SENARYOLARLA
Linux’ta ustalaşmanın en hızlı yolu, komutları ezberlemekten çok gerçek bir işi çözerken kullanmaktan geçer. Bu yazıda, günlük kullanımda en çok karşılaşılan dosya ve dizin işlemlerini, ardından da güvenli çalışmanın temelini oluşturan dosya izinlerini pratik senaryolarla ele alacağız.
Hedefimiz “neden” sorusunu atlamadan ilerlemek: Bir komutun çıktısını nasıl yorumlayacağınızı, hangi durumda hangi seçeneğin anlamlı olduğunu ve izinlerde küçük bir hatanın nasıl büyük bir güvenlik problemine dönüşebileceğini göreceksiniz. Anlatım boyunca kısa checklist’ler ve tipik hata örnekleriyle konuyu pekiştireceğiz.
Eğer konuyu daha yapılandırılmış ve uygulamalı laboratuvarlarla öğrenmek isterseniz Linux Eğitimi sayfasına da göz atabilirsiniz.

Linux temel komutlar: Dosya sistemi içinde güvenli gezinme
Komut satırında verimli olmanın ilk adımı, bulunduğunuz konumu ve hedef dizinleri doğru yönetmektir. pwd ile mevcut dizini görür, cd ile dizin değiştirir, ls ile içerik listelersiniz. Basit görünse de, büyük bir proje ağacında doğru yerde çalışmak hataları ciddi biçimde azaltır.
Göreli ve mutlak yol farkını netleştirin: “/var/log” mutlak bir yoldur; bulunduğunuz dizinden bağımsızdır. “../logs” ise göreli bir yoldur; mevcut konuma göre anlam kazanır. Özellikle otomasyon betiklerinde mutlak yollar daha öngörülebilir sonuç verir.
ls çıktısını okumak: Boyut, zaman ve gizli öğeler
ls -lah en sık kullanılan kombinasyonlardan biridir: “-l” detay, “-a” gizli öğeler, “-h” okunabilir boyut. Listeyi okurken ilk sütunda izinler, ardından link sayısı, sahip/grup, boyut ve zaman bilgisi gelir. Bu düzen, izin hatalarını teşhis ederken kritik ipuçları taşır.
Pratik navigasyon ipuçları
- Bir önceki dizine hızlı dönüş: cd -
- Ev dizinine dönüş: cd veya cd ~
- Yol tamamlama: Tab ile hata riskini azaltma
- Uzun listeyi süzme: ls -l | grep yaklaşımı yerine mümkünse ls seçenekleriyle filtreleme
Dosya oluşturma, kopyalama ve taşıma: Hata yapmadan çalışmak
Günlük işlerin büyük kısmı touch, cp, mv, rm etrafında döner. Burada kritik nokta, geri dönüşü zor işlemlerde kontrollü ilerlemektir. Yanlış dizinde “rm -rf” çalıştırmak, çoğu zaman bir “teknik borç” değil doğrudan bir “olay”dır.
cp ve mv seçenekleri: Koruma, üzerine yazma ve doğrulama
Kopyalama ve taşıma sırasında aşağıdaki alışkanlıklar işi güvenli hale getirir:
- Üzerine yazmayı engellemek için cp -n veya etkileşimli mod için cp -i
- Öznitelikleri korumak için cp -a (özellikle yapılandırma dizinlerinde)
- Taşımada hedefi netleştirmek için yolun sonuna “/” koyarak dizin hedefini açık etmek
rm ile güvenli silme yaklaşımı
Silme işlemi için “önce kontrol et, sonra uygula” kuralı iş kurtarır. Büyük bir wildcard kullanmadan önce echo ile neyi etkileyeceğinizi görmek iyi bir pratiktir. Ayrıca kritik ortamlarda “trash-cli” gibi çözümlerle geri dönüş imkanı oluşturmak değerlidir.
Arama ve filtreleme: find, grep ve boru hattı mantığı
Linux’ta verimlilik, doğru veriyi hızlı bulabilmekle doğrudan ilişkilidir. find dosya sistemi üzerinde arama yaparken, grep dosya içeriğinde eşleşme arar. Birlikte kullanıldıklarında güçlü bir keşif aracı haline gelirler.
find ile pratik senaryolar
Örneğin bir projede “.log” uzantılı ve son 7 günde değişmiş dosyaları bulmak isteyebilirsiniz. Ya da büyük bir dizinde belirli bir isim desenini ararsınız. “-maxdepth” gibi seçeneklerle arama alanını sınırlamak performansı ciddi ölçüde artırır.
# 7 günde değişen log dosyalarını bul
find /var/log -type f -name "*.log" -mtime -7
# "config" geçen dosya adlarını kullanıcı dizininde ara
find ~/ -type f -iname "*config*"
# 100 MB'dan büyük dosyaları bul (disk temizliği için)
find / -type f -size +100M 2>/dev/nullgrep ile içerik tarama ve bağlam gösterimi
Bir hata mesajını log’larda ararken grep -n ile satır numarasını almak, grep -C ile bağlam satırlarını görmek tanılama süresini kısaltır. Büyük dosyalarda ripgrep (rg) gibi alternatifler de hız kazandırabilir; fakat temel mantık değişmez: doğru desen, doğru kapsam.
# nginx hata loglarında 500 kodunu arayıp 2 satır bağlam göster
grep -nC 2 " 500 " /var/log/nginx/error.log
# Bir dizindeki tüm .conf dosyalarında "server_name" geçen yerleri bul
grep -RIn --include="*.conf" "server_name" /etc/nginxDosya izinleri mantığı: r, w, x ve kim için geçerli?
Dosya izinleri, Linux’ta güvenliğin temel taşlarından biridir. İzinler üç role göre değerlendirilir: owner (kullanıcı), group (grup), others (diğerleri). Her rol için okuma (r), yazma (w) ve çalıştırma (x) hakları ayrı ayrı tanımlanır.
Çalıştırma biti dizinlerde neden farklı hissedilir?
Dizinlerde “x” (execute) bitinin anlamı “içeriğe erişebilme/gezinebilme”dir. Bir dizinde okuma izniniz olsa bile “x” yoksa içine girip dosyalara erişemezsiniz. Bu ayrım, “listeleyebiliyorum ama açamıyorum” gibi sık görülen durumların arkasındaki sebebi açıklar.
ls -l çıktısında izinleri yorumlama
Örnek bir çıktı düşünün: “-rwxr-x---”. İlk karakter dosya tipini gösterir. Ardından üçlü bloklar gelir: owner için “rwx”, group için “r-x”, others için “---”. Buradan owner’ın tam yetkili, grubun okuyup çalıştırabildiği, diğerlerinin ise hiç erişemediği sonucu çıkar.
chmod ile izin yönetimi: Sembolik ve sayısal yaklaşım
chmod ile izinleri iki temel biçimde ayarlarsınız: sembolik (u/g/o, +/-, r/w/x) ve sayısal (ör. 644, 755). Sembolik yöntem okunabilirliği artırır; sayısal yöntem hızlıdır ve otomasyonlarda sık kullanılır.
Sembolik chmod: Net ve açıklayıcı
Örneğin bir betiği çalıştırılabilir yapmak için owner’a “x” eklemek yaygın bir senaryodur: “chmod u+x script.sh”. Ekibinizin okuyabilmesi için grup okuması eklemek de benzer şekilde yapılır. Bu yöntem, “neyi değiştirdiğinizi” daha açık gösterir.
Sayısal chmod: 644 ve 755 ne anlama gelir?
Sayısal gösterimde r=4, w=2, x=1 olarak düşünülür ve her rolün toplamı yazılır. 7=4+2+1 (rwx), 6=4+2 (rw-), 5=4+1 (r-x), 4=r--. Örneğin 644: owner rw-, group r--, others r--. 755: owner rwx, group r-x, others r-x.
chown, chgrp ve umask: Sahiplik ve varsayılan izin stratejisi
İzinleri doğru ayarlamak kadar, sahiplik ve varsayılan izin politikası da önemlidir. Bir dosyanın sahibi yanlışsa, istediğiniz chmod ayarı pratikte hedeflediğiniz erişimi sağlamayabilir. Takım çalışmasında grup sahipliği ve umask, düzeni sürdürülebilir kılar.
chown ve chgrp ile pratik sahiplik düzeni
Örneğin web sunucusunun okuması gereken bir dizinde dosyaların sahibi uygulama kullanıcısı olmalı, grup ise deploy ekibi gibi yönetilebilir bir grup olmalıdır. Böylece hem operasyonel erişim korunur hem de gereksiz “root ile müdahale” ihtiyacı azalır.
umask ile “en az ayrıcalık” yaklaşımı
umask, yeni oluşturulan dosya/dizinlerin varsayılan izinlerini etkiler. Birçok dağıtımda dosyalar 666, dizinler 777 “taban” kabul edilir ve umask bu tabandan düşülür. Örneğin umask 022 iken dosya 644, dizin 755 gibi oluşur. Güvenli tarafta kalmak için üretim hesaplarında daha kısıtlı umask tercih edilebilir; ancak ekip iş akışını bozmadan belirlemek gerekir.
Pratik senaryo: Paylaşımlı proje dizininde doğru izin modeli
Senaryo: “/srv/app” altında bir proje var. Deploy ekibi dosyaları güncelliyor, uygulama kullanıcı hesabı (ör. appuser) ise sadece okumalı ve bazı klasörlere yazmalı. Bu tip durumda tek bir “chmod 777” ile çözmek cazip gelse de güvenlik açısından kötü bir alışkanlıktır. Bunun yerine sahiplik, grup ve hedef klasör izinlerini planlayın.
Adım adım uygulanabilir yaklaşım
- Proje dizininin grubunu “deploy” yapıp deploy ekibini bu gruba ekleme
- Kaynak dosyaları 640/750 gibi kısıtlı modellerle tutma, yalnız gereken yerlerde yazma açma
- Log ve cache gibi çalışma dizinlerinde kontrollü yazma izni verme
- Gereksiz “others write” (o+w) izinlerinden kaçınma
Bu düzen, hem denetlenebilir bir erişim sağlar hem de “herkes yazsın” kolaycılığından kaçınır. Özellikle çok kullanıcılı sunucularda bu fark, olayların önüne geçer.

Yaygın hatalar ve hızlı kontrol listesi
İzin yönetiminde en sık görülen hatalar genellikle aceleyle yapılan değişikliklerden doğar. Aşağıdaki kontrol listesi, hızlı teşhis için iyi bir başlangıç sağlar:
- Doğru dizinde misiniz? pwd ile doğrulayın.
- Hedef dosyanın sahip/grup bilgisi doğru mu? ls -l ile kontrol edin.
- Dizinlerde “x” biti var mı? Erişim için kritik olduğunu unutmayın.
- Gereksiz geniş izin var mı? Least privilege ilkesini koruyun.
- Değişiklikten önce etkisini görün: wildcard’ları önce echo ile test edin.
Son olarak, izinleri yönetirken sadece “çalışsın” değil, “güvenli ve sürdürülebilir çalışsın” hedefini koyun. Bu bakış, hem sistem kararlılığını hem de ekip verimini artırır.
Sonuç: Komutlar ve izinler birlikte düşünülmeli
Linux temel komutlar, dosya sistemini etkin yönetmenin temelini; dosya izinleri ise güvenli ve kontrollü çalışmanın omurgasını oluşturur. Günlük pratikte bu iki alan iç içe geçer: doğru komutla doğru dosyayı bulur, doğru izinle doğru kişiye doğru erişimi verirsiniz.
Bu yazıdaki senaryoları kendi ortamınıza uyarlayıp küçük denemeler yaptığınızda, komutların “sihir” değil sistematik bir araç seti olduğunu göreceksiniz. Düzenli pratikle kısa sürede daha hızlı, daha güvenli ve daha öngörülebilir bir Linux deneyimi yakalarsınız.


