Dosyalarımızı sunucuya yüklediğimiz zaman genelde onların herkes tarafından görülmesinde herhangi bir sakınca yoktur, çünkü zaten herkesin görmesi için hazırlanmıştır bu dosyalar.
Ancak bazen bazı dosyalara erişim kısıtlaması koymak isteyebiliriz. Bunu yapmak herhangi bir ftp programı ile oldukça kolaydır, ancak bazen erişim ayarlarını yazdığımız uygulama sırasında yapmamız gerekebilir ve bunu da php ile yapabiliriz.
PHP ile dosyalara erişim kısıtlaması koymadan önce, erişim kısıtlamasını tasvir eden sayıları anlamamız gerekir.
Chmod sayıları
Chmod sayıları ile daha önce kesin karşılaşmışsınızdır, 3 basamaklı bir sayıdır, 755, 600 ve benzeri gibi. bu sayılar oluşturulurken iki temek unsur göz önüne alınır:
kullanıcı
3 temel kullanıcı seviyesi vardır:
- Dosyanın sahibi
- Dosya sahibinin grubuna dahil kullanıcılar
- Diğer tüm kullanıcılar
Chmod sayılarındaki 3 basamağin her biri de bu kullanıcılara verilen izni açıklar, mesela 755 sayısının 1. basamağı dosya sahibinin erişim seviyesini gösterir, 2. basamağı grubun erişim seviyesi ve son basamağı da diğerlerinin erişim seviyesini gösterir. Yani 755 için: sahip 7, grup 5 ve diğerleri 5 hakkına sahiptir.
Peki bu sayılar ne ifade eder?
sayılar
Chmod ayarlarında 4 temel sayı vardır:
- 0: Hiçbir izin yok
- 1: Çalıştırma izni
- 2: Yazma izni
- 4: okuma izni
Bu 4 temel sayı 4 temel izni ifade eder. Bir dosya için hem okuma hem yazma izni verilecekse, bu iki izne karşılık gelen sayıları toplarız ve ortaya okuma-yazma izni çıkar: 2+4=6:okuma-yazma izni.
Toplamları da hesaba katarsak erişim kısıtlamaları koyan sayılar şöyle olur:
- 0: İzin yok
- 1: Çalıştırma izni
- 2: Yazma izni
- 3: Çalıştırma-yazma izni
- 4: Okuma izni
- 5: Çalıştırma-okuma izni
- 6: Yazma-okuma izni
- 7: Çalıştırma-yazma-okuma izni
sonuç
Sonuç olarak artık 755 veya 644 sayılarının ne anlama geldiğini biliyoruz. Artık PHP ile dosyalara istediğimiz şekilde (abartmadan!) erişim kısıtlaması koyabiliriz.
PHP kodu
PHP dosya erişim sınırlaması yapan fonksiyon chmod() fonksiyonudur ve şu şekilde kullanılır:
chmod("dizin/dosya", 0sayi)
Sayının başına sadece 0 koyuyoruz. İsterseniz birkaç dosyaya erişim kısıtlaması koyalım:
chmod("dizin/dosya.jpg", 0755);
//sahip herseyi yapar, digerleri okur ve calistirir
chmod("dizin/dosya2.jpg", 0644);
//sahip okur ve yazar, diğerleri sadece okur
chmod("dizin/dosya3.jpg", 0600);
//sahip okur ve yazar, digerlerine izin yok
İşte bu kadar!