Tüm barındırma hizmetlerinde 15% tasarruf edin

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

Kodu kullanın: Skills Başlayın
Bölüm
İşletim sistemleri Linux Sanal Sunucular

Linux Dosya İzinlerini Anlamak ve Yönetmek

Linux dosya izinleri, sistem yönetiminin en temel — ve en yanlış anlaşılan — yönlerinden biridir. Bir üretim web sunucusunu yönetiyor, uygulamalar dağıtıyor veya otomasyon betikleri yazıyor olsanız da, Linux izin modelini sağlam bir şekilde anlamak kaçınılmazdır. Yanlış yaparsanız, veri ihlalleri, bozuk dağıtımlar veya kilitli hizmetler riskiyle karşı karşıya kalırsınız. Doğru yaparsanız, güçlü, ayrıntılı bir güvenlik çerçevesinin sizin lehinizdeki çalışmasını sağlarsınız.

Bu kılavuz bilmeniz gereken her şeyi kapsar: izin modeli nasıl çalışır, izinleri nasıl okur ve değiştirirsiniz, sahipliği nasıl yönetirsiniz ve SUID, SGID ve yapışkan bit gibi gelişmiş izin bitlerini nasıl işlersiniz.

Linux Dosya İzin Modeli Açıklaması

Linux sistemindeki her dosya ve dizine bir dizi erişim hakkı atanır. Bu haklar üç kullanıcı sınıfı ve üç izin türü arasında bölünür.

Üç Kullanıcı Sınıfı

SınıfAçıklama
ownerDosyaya sahip olan kullanıcı
groupDosyanın atanmış grubuna ait tüm kullanıcılar
othersSistemdeki diğer herkes

Üç İzin Türü

İzinSembolAnlamı
readrDosya içeriğini görüntüle veya dizin içeriğini listele
writewBir dosyayı veya dizini değiştir
executexBir dosyayı program olarak çalıştır veya bir dizine gir/geç

Birlikte, bu dokuz bit (üç sınıf × üç izin) dosya sistemindeki her nesne için tam erişim kontrol profilini tanımlar.

ls -l ile Dosya İzinlerini Görüntüleme

İzinleri incelemenin en hızlı yolu ls -l komutu ile yapılır:

ls -l myscript.sh

Örnek çıktı:

-rwxr-xr-- 1 alice devs 2048 Jan 25 10:00 myscript.sh

İzin dizesini karakter karakter nasıl okuyacağınız aşağıda açıklanmıştır:

KarakterlerAnlamı
-Dosya türü (- = normal dosya, d = dizin, l = sembolik bağlantı)
rwxSahip izinleri: okuma, yazma, çalıştırma
r-xGrup izinleri: okuma, çalıştırma (yazma yok)
r--Diğerleri izinleri: yalnızca okuma

Bu örnekte, alice (sahip) tam erişime sahiptir, devs grubunun üyeleri dosyayı okuyabilir ve çalıştırabilir ve diğer herkes yalnızca okuyabilir.

chmod ile İzinleri Değiştirme

chmod komutu dosya izinlerini değiştirir. İki modu destekler: sembolik ve sayısal (sekizli).
Sembolik Mod
Sembolik mod, izinleri eklemek (+), kaldırmak (-) veya ayarlamak (=) için harfler ve operatörler kullanır:
chmod u+x myscript.sh      # Add execute permission for the owner
chmod g-w myscript.sh      # Remove write permission from the group
chmod o=r myscript.sh      # Set read-only for others (exactly)
chmod a+x myscript.sh      # Add execute for all (owner, group, others)
Hedef sınıfları: u (kullanıcı/sahip), g (grup), o (diğerleri), a (tümü).
Sayısal (Sekizli) Mod
Her izin türünün sayısal bir değeri vardır: r = 4, w = 2, x = 1. Sınıf başına tek bir basamak elde etmek için bunları bir araya getirirsiniz.




Sekizli
İkili
İzinler




7
111
rwx


6
110
rw-


5
101
r-x


4
100
r--


0
000
---




Yaygın örnekler:
chmod 755 myscript.sh   # Owner: rwx | Group: r-x | Others: r-x
chmod 644 file.txt      # Owner: rw- | Group: r-- | Others: r--
chmod 700 script.sh     # Owner: rwx | Group: --- | Others: ---
chmod 600 secret.key    # Owner: rw- | Group: --- | Others: ---
> Hızlı referans: 755 halkla açık betikler ve dizinler için standarttır. 644 okunabilir yapılandırma dosyaları için standarttır. 600 özel anahtarlar ve hassas kimlik bilgileri için idealdir.
chown ve chgrp ile Sahipliği Yönetme
İzinler yalnızca sahiplik bağlamında anlam kazanır. chown ve chgrp komutları dosyaları doğru kullanıcı ve gruba atanmanızı sağlar.
Dosya Sahibini Değiştirme
chown alice file.txt
Grubu Değiştirme
chgrp devs file.txt
Sahibi ve Grubu Aynı Anda Değiştirme
chown bob:admins file.txt
Değişiklikleri Özyinelemeli Olarak Uygulama
-R bayrağı sahiplik değişikliklerini bir dizine ve tüm içeriğine uygular — web sunucusu belge köklerini ayarlarken gereklidir:
chown -R www-data:www-data /var/www/html/
Bu, bir VPS Hosting ortamında web uygulamaları dağıtırken kritik bir adımdır ve web sunucusu işleminin dosyalara doğru şekilde erişmesini sağlar.
Özel İzin Bitleri: SUID, SGID ve Sticky Bit
Standart dokuz izin bitinin ötesinde, Linux varsayılan davranışı önemli şekillerde değiştiren üç özel modu destekler.
1. SUID — Set User ID
Uygulanır: Çalıştırılabilir dosyalar
SUID biti bir çalıştırılabilir dosyada ayarlandığında, dosyayı başlatan kullanıcının değil, dosyanın sahibinin ayrıcalıklarıyla çalışır.
chmod u+s /usr/bin/passwd
ls -l çıktısı:
-rwsr-xr-x 1 root root 54256 Jan 10 08:00 /usr/bin/passwd
Sahibin x yerine s olduğuna dikkat edin. Bu, /usr/bin/passwd tarafından normal bir kullanıcı tarafından çalıştırıldığında bile /etc/shadow (root’a ait bir dosya) güncellenebilmesinin nedenidir.
> Güvenlik notu: Özel betiklerde SUID ayarlamak konusunda çok dikkatli olun. Yanlış yapılandırılmış bir SUID ikilisi klasik bir ayrıcalık yükseltme vektörüdür.
2. SGID — Set Group ID
Uygulanır: Çalıştırılabilir dosyalar ve dizinler

Dosyalarda: Dosya, dosyanın grup sahibinin grup ayrıcalıklarıyla çalışır.
Dizinlerde: Dizinin içinde oluşturulan yeni dosyalar otomatik olarak oluşturan kullanıcının birincil grubu yerine dizinin grubunu devralır.

chmod g+s /opt/project
ls -l çıktısı:
drwxr-sr-x 2 alice devs 4096 Jan 25 10:00 /opt/project
Dizinlerde SGID, birden fazla takım üyesinin tüm yeni dosyalarda tutarlı grup sahipliğine ihtiyaç duyduğu paylaşılan geliştirme klasörleri için son derece kullanışlıdır.
3. Sticky Bit
Uygulanır: Dizinler
Sticky bit bir dizinde ayarlandığında, yalnızca dosyanın sahibi (veya root) o dosyayı silebilir veya yeniden adlandırabilir — diğer kullanıcıların dizinde yazma izni olsa bile.
chmod +t /shared/folder
ls -ld için /tmp çıktısı:
drwxrwxrwt 10 root root 4096 Jan 28 12:00 /tmp
Sonundaki t, sticky bitin etkin olduğunu gösterir. Bu nedenle /tmp herkese açık yazılabilir olmasına rağmen kullanıcılar birbirlerinin geçici dosyalarını silemezler.
umask Anlamak — Varsayılan İzin Kontrolü
Yeni bir dosya veya dizin oluşturulduğunda, Linux ona maksimum izinler vermez. Bunun yerine, varsayılandan izinleri çıkaran bir umask (kullanıcı dosya oluşturma maskesi) uygular.
Mevcut umask’ınızı Kontrol Edin
umask
Yaygın çıktı: 0022

umask Nasıl Çalışır

NesneVarsayılan Maksimumumask `0022` ileSonuç
Dosya666 (rw-rw-rw-)666 - 022644 (rw-r–r–)
Dizin777 (rwxrwxrwx)777 - 022755 (rwxr-xr-x)

> Not: Linux, umask’tan bağımsız olarak, yeni oluşturulan dosyalara varsayılan olarak hiçbir zaman execute bitini ayarlamaz.

Geçici umask Ayarlayın

umask 0077    # New files: 600 (rw-------), New dirs: 700 (rwx------)

Bu, hassas geçici dosyalar oluşturan betiklerde kullanışlıdır. Kalıcı bir değişiklik için, umask komutunu shell’inizin profil dosyasına ekleyin (örneğin, ~/.bashrc veya /etc/profile).

Özyinelemeli İzin Düzeltmeleri

Yaygın bir gerçek dünya görevi, tüm proje dizini genelinde izinleri sıfırlamaktır — örneğin, kötü bir dağıtımdan veya izinleri karıştıran bir FTP yüklemesinden sonra. Anahtar, dizinler ve dosyalar için farklı izinler ayarlamaktır, çünkü dizinlerin geçilebilir olması için yürütme bitine ihtiyacı vardır.

# Set all directories to 755
find /var/www/myapp -type d -exec chmod 755 {} ;

# Set all files to 644
find /var/www/myapp -type f -exec chmod 644 {} ;

Uygulamanızın belirli yürütülebilir betikleri varsa, bunları daha sonra ayrı olarak düzeltin:

chmod 755 /var/www/myapp/bin/*.sh

Bu desen, web barındırma ortamlarını yöneten herkes için gereklidir. cPanel ile VPS üzerinde PHP, Python veya Node.js uygulamaları çalıştırıyorsanız, yanlış dosya izinleri 403 Forbidden hatalarının ve başarısız betik yürütmesinin en yaygın nedenlerinden biridir.

Yaygın Senaryolar için Pratik İzin Referansı

SenaryoÖnerilen İzinlerKomut
Genel web dosyaları (HTML, CSS, JS)644chmod 644 index.html
Web dizinleri755chmod 755 /var/www/html
PHP/Python betikleri644 veya 755Yürütme yöntemine bağlıdır
Özel SSH anahtarları600chmod 600 ~/.ssh/id_rsa
.ssh dizini700chmod 700 ~/.ssh
Paylaşılan proje dizini2775 (SGID)chmod 2775 /opt/project
Dünya tarafından yazılabilir geçici dizin1777 (yapışkan)chmod 1777 /tmp/shared
Sırlar içeren yapılandırma dosyaları600chmod 600 .env

Linux Dosya İzinleri ve Sunucu Güvenliği

Dosya izinlerini anlamak sadece akademik bir alıştırma değildir — sunucu güvenliği ve istikrarı için doğrudan, pratik sonuçları vardır.

Kaçınılması gereken yaygın güvenlik hataları:

  • Web dizinlerinde 777 ayarlanması. Bu, herkese okuma, yazma ve yürütme erişimi verir — sunucunuz tehlikeye girerse veya PHP kod enjeksiyonu mümkünse kritik bir güvenlik açığıdır.
  • Dünya tarafından okunabilir yapılandırma dosyalarını bırakmak. .env, wp-config.php gibi dosyalar veya veritabanı kimlik bilgileri en fazla 600 veya 640 olmalıdır.
  • Sahipliği göz ardı etmek. İzinler doğru görünse bile, yanlış kullanıcı bir dosyaya sahipse, web sunucunuz veya uygulama daemon’u bunu okuyamayabilir.
  • Sistem dizinlerinde özyinelemeli chown. chown -R komutunu /etc veya /usr üzerinde dikkatsizce çalıştırmak tüm sisteminizi bozabilir.

Dedicated Servers üzerinde bir üretim ortamı çalıştırıyorsanız, katı bir izin politikası uygulamak, ilk kurulumdan sonra atmanız gereken ilk sertleştirme adımlarından biridir.

Birden fazla siteyi veya uygulamayı yöneten ekipler için, VPS Control Panels grafik dosya yöneticileri aracılığıyla izin yönetimini basitleştirebilir, ancak komut satırı yeterliliği gelişmiş yapılandırmalar için gerekli olmaya devam eder.

Hızlı Komut Referansı

# View permissions
ls -l filename
ls -ld directory/

# Change permissions (symbolic)
chmod u+x file        # Add execute for owner
chmod g-w file        # Remove write for group
chmod o=r file        # Set read-only for others
chmod a+r file        # Add read for all

# Change permissions (numeric)
chmod 755 file        # rwxr-xr-x
chmod 644 file        # rw-r--r--
chmod 600 file        # rw-------
chmod 700 file        # rwx------

# Change ownership
chown user file
chgrp group file
chown user:group file
chown -R user:group directory/

# Special bits
chmod u+s file        # Set SUID
chmod g+s directory   # Set SGID
chmod +t directory    # Set sticky bit

# umask
umask                 # Show current umask
umask 0022            # Set umask for session

# Recursive fixes
find /path -type d -exec chmod 755 {} ;
find /path -type f -exec chmod 644 {} ;

Sonuç

Linux dosya izinleri sistem güvenliğinin, çok kullanıcılı erişim kontrolünün ve güvenilir uygulama dağıtımının temelini oluşturur. Model basitliğinde zarif — üç sınıf, üç izin türü, bir avuç özel bit — ancak kişisel bir geliştirme makinesinden yüksek trafikli bir üretim sunucusuna kadar her şeyi güvenli hale getirmek için yeterince güçlüdür.

chmod, chown, umask ve özel izin bitlerini öğrenmek, uygulamaları doğru şekilde dağıtma, erişim hatalarını hızlı şekilde giderme ve sunucularınızı yetkisiz erişime karşı sertleştirme konusunda size güven verir.

Paylaşımlı Web Barındırma ile başlıyor olsanız da veya tam yönetilen bir VPS Barındırma ortamına ölçeklendiriyor olsanız da, Linux dosya izinleri hakkında sağlam bir anlayış, sistem yöneticisi veya geliştirici olarak geliştirebileceğiniz en yüksek etkili becerilerden biridir. Bunu derinlemesine anlamak için zaman ayırın — sunucularınız (ve kullanıcılarınız) size teşekkür edecektir.