Linux dosya izinleri: chmod, chown ve 755, 644 rakamlarının anlamı

Linux Sunucu (SSH) 58 görüntülenme Markdown

Linux'ta her dosya ve klasörün bir sahibi, bir grubu ve üç tür kullanıcı için izinleri vardır. "Permission denied" hatasının, web sitesinde 403'ün ya da bir betiğin çalışmamasının çoğu zaman sebebi bu izinlerdir. Rakamlar ilk bakışta gizemli görünür ama mantığı basittir.

İzinleri okumak

ls -l /var/www/ornek.com
-rw-r--r-- 1 www-data www-data  1234 Oct 20 12:00 index.php
drwxr-xr-x 2 www-data www-data  4096 Oct 20 12:00 resimler

İlk sütun 10 karakterdir. İlk karakter türü söyler (- dosya, d klasör). Sonraki üçlü gruplar sırasıyla sahip, grup ve diğerleri içindir. Her grupta r okuma, w yazma, x çalıştırma (klasörde: içine girme) hakkıdır; - hak yok demektir. Yani rw-r--r--: sahip okuyup yazar, grup ve diğerleri yalnızca okur. Sonraki iki sütun sahip ve grup adıdır (www-data www-data).

Rakamlar

Her hak bir sayıdır: okuma 4, yazma 2, çalıştırma 1. Üçlüyü toplarsınız:

  • rwx = 4+2+1 = 7
  • rw- = 4+2 = 6
  • r-x = 4+1 = 5
  • r-- = 4

Üç rakam sırasıyla sahip, grup, diğerleri için yazılır: 755 = rwxr-xr-x (sahip her şeyi yapar, diğerleri okur ve girer); 644 = rw-r--r--; 600 = yalnızca sahip okur/yazar; 777 herkese her hakkı verir ve güvensizdir.

chmod: izni değiştirme

chmod 644 dosya.txt        # rakamla
chmod +x betik.sh          # çalıştırma hakkı ekle
chmod -R 755 klasor        # klasörü ve içindekileri
chmod u+w,go-w dosya       # sahibe yaz ekle, gruptan ve diğerlerinden yazmayı al

Web siteleri için standart: klasörler 755, dosyalar 644. Bir klasöre girmek için x hakkı gerekir; chmod -R 644 klasörleri de 644 yaparsa içine kimse giremez. Doğru yöntem klasör ve dosyaları ayırmaktır:

find /var/www/ornek.com -type d -exec chmod 755 {} \;
find /var/www/ornek.com -type f -exec chmod 644 {} \;

chown: sahibi değiştirme

sudo chown www-data:www-data dosya.php
sudo chown -R www-data:www-data /var/www/ornek.com

Sahip, "kullanıcı:grup" biçiminde yazılır. Web sunucusu (Nginx, PHP-FPM) çoğu dağıtımda www-data kullanıcısıyla çalışır; sitenin dosyalarını okuyabilmesi, yükleme ve önbellek klasörlerine yazabilmesi için sahiplik buna uygun olmalıdır. Çalışan kullanıcıyı ps aux | grep -E "nginx|php-fpm" ile öğrenin.

Sık sorunlar

  • "Permission denied" betik çalıştırırken: Dosyanın x hakkı yoktur: chmod +x betik.sh. Ya da dosya noexec bağlanmış bir diskte durur.
  • Nginx 403: Yolun üzerindeki herhangi bir klasörün x hakkı eksiktir: namei -l /tam/yol/dosya komutu tüm yoldaki izinleri gösterir: Nginx 403.
  • WordPress güncelleyemiyor: Sahiplik yanlıştır: WordPress dosya izinleri.
  • SSH anahtarı çalışmıyor: ~/.ssh 700, authorized_keys 600 olmalı: publickey hatası.
  • Her şeyi 777 yapmak: Çözmüş gibi görünür ama herkesin dosyalarınızı değiştirmesine izin verir. Doğru sahip ve izni ayarlayın.

Hosting paketinde dosya sahipliği ve izinler genellikle sorunsuzdur; sorun yaşarsanız Dosya Yöneticisi'nden izinleri düzeltebilirsiniz: 403, 404, 500 hataları.

Sık sorulanlar

Sticky bit ve setuid nedir?

Üç rakamın başına eklenen dördüncü rakamlardır (1755, 4755). Özel durumlar içindir (ortak klasörler, yetki yükselten programlar). Normal bir web sitesi için gerekmez.

umask nedir?

Yeni oluşturulan dosyaların varsayılan izinlerini belirler. Genelde 022'dir; yani yeni dosya 644, yeni klasör 755 olur.

Sahibi root olan bir dosyayı düzenleyemiyorum.

sudo ile düzenleyin ya da sahibini değiştirin. Sistem dosyalarının sahibini değiştirmeyin.

İlgili makaleler

Sorununuz çözülmediyse destek talebi açın. Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.