Ana Sayfa/Blog/Unix/Linux Dosya İzinleri: chmod, chown Rehberi

Unix/Linux Dosya İzinleri: chmod, chown Rehberi

Unix/Linux işletim sistemlerinde her dosya ve dizin, kimlerin okuyabildiğini, yazabildiğini ve çalıştırabildiğini belirleyen bir izin (permission) sistemine sahiptir. Bu sistem, sunucu güvenliğinin temelini oluşturur ve yanlış yapılandırma ciddi güvenlik açıklarına yol açabilir.

İzin Yapısı: rwx

ls -l komutunu çalıştırdığınızda dosya izinlerini görürsünüz:

-rwxr-xr-- 1 fatih developers 4096 Dec 15 10:30 script.sh
drwxr-x--- 2 fatih developers 4096 Dec 15 10:30 src/

İlk karakter dosya türünü belirtir: - normal dosya, d dizin, l sembolik bağlantı. Sonraki 9 karakter üç gruba ayrılır:

Her grupta üç izin türü vardır:

Sekizlik (Octal) Gösterim

Her izin bir bit ile temsil edilir: r=4, w=2, x=1. Bu değerler toplanarak sekizlik gösterim elde edilir:

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

Örnekler:
755 = rwxr-xr-x  → Sahip tam yetki, diğerleri okuma ve çalıştırma
644 = rw-r--r--  → Sahip okuma/yazma, diğerleri sadece okuma
700 = rwx------  → Yalnızca sahip erişebilir
600 = rw-------  → Yalnızca sahip okuyup yazabilir
775 = rwxrwxr-x  → Sahip ve grup tam yetki

chmod Komutu

chmod (change mode) dosya izinlerini değiştirir. İki söz dizimi vardır:

Sekizlik Söz Dizimi

# Sahip: rwx, Grup: r-x, Diğer: r-x
chmod 755 script.sh

# Sahip: rw-, Grup: r--, Diğer: r--
chmod 644 index.html

# Yalnızca sahip erişebilir
chmod 700 gizli-dosya.txt

# Dizin ve içindeki tüm dosyalar (recursive)
chmod -R 755 public/

Sembolik Söz Dizimi

# Sahibe çalıştırma izni ekle
chmod u+x script.sh

# Gruba yazma izni ekle
chmod g+w dosya.txt

# Diğerlerinden tüm izinleri kaldır
chmod o-rwx gizli.txt

# Herkese okuma izni ver
chmod a+r belge.txt

# Sahibe tam yetki, gruba okuma/çalıştırma
chmod u=rwx,g=rx,o= dosya.sh

Sembolik gösterimde: u=sahip, g=grup, o=diğer, a=herkes. + ekler, - kaldırır, = tam olarak ayarlar.

chown ve chgrp Komutları

chown (change owner) dosya sahipliğini değiştirir:

# Sahip değiştirme
chown fatih dosya.txt

# Sahip ve grup değiştirme
chown fatih:developers dosya.txt

# Yalnızca grup değiştirme
chown :developers dosya.txt
# veya
chgrp developers dosya.txt

# Recursive (dizin ve alt içerik)
chown -R www-data:www-data /var/www/html/

Özel İzinler

Standart rwx izinlerine ek olarak üç özel izin türü vardır:

Setuid (4000)

Bir çalıştırılabilir dosyada setuid aktifse, dosya çalıştıranın değil dosya sahibinin yetkileriyle çalışır:

chmod u+s program
chmod 4755 program
# -rwsr-xr-x olarak görünür

passwd komutu buna örnektir — normal kullanıcılar root sahipliğindeki şifre dosyasını değiştirebilir.

Setgid (2000)

Dosyada: Grup sahibinin yetkileriyle çalışır. Dizinde: İçinde oluşturulan yeni dosyalar dizinin grubunu miras alır:

chmod g+s paylasim/
chmod 2775 paylasim/
# drwxrwsr-x olarak görünür

Sticky Bit (1000)

Bir dizinde sticky bit aktifse, yalnızca dosya sahibi o dosyayı silebilir (dizin herkese açık olsa bile):

chmod +t /tmp
chmod 1777 /tmp
# drwxrwxrwt olarak görünür

/tmp dizini buna klasik örnektir — herkes dosya oluşturabilir ama yalnızca sahibi silebilir.

Yaygın Senaryolar

# Web sunucusu dosyaları
chmod 644 *.html *.css *.js   # Statik dosyalar
chmod 755 cgi-bin/             # CGI dizini
chmod 600 .htpasswd            # Şifre dosyası

# SSH anahtarları
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa        # Özel anahtar
chmod 644 ~/.ssh/id_rsa.pub    # Genel anahtar

# Script dosyaları
chmod 755 deploy.sh            # Çalıştırılabilir script

Dosya izinlerini hızlıca hesaplamak ve anlamak için SiteScripti'nin Unix İzin Hesaplayıcı aracını kullanabilirsiniz.

Bu konuyla ilgili araçlarımızı da deneyin: ENV Generator, Docker Compose Oluşturucu, cURL Builder

← Tüm Yazılar