Linux Dosya İzinleri: chmod ve chown Rehberi
Linux dosya izinleri nasıl okunur ve değiştirilir? rwx, 755 ve 644, chmod ve chown, site ve SSH dosyaları için doğru izinler ve Permission denied hatası.

İçindekiler
- İzinleri okuma: ls -l
- r, w ve x ne demek?
- Sayısal izinler: 755, 644, 600
- chmod: izinleri değiştirme
- chown: dosya sahibini değiştirme
- Web sitesi dosyaları için doğru izinler
- Asla chmod 777 kullanmayın
- SSH dosyaları için izinler
- "Permission denied" hatasını çözme
- Özel izinler: setuid, setgid ve sticky bit
- Nodesty sunucularında dosya izinleri
Linux dosya izinleri, sunucudaki her dosya ve klasör için kimin okuyabileceğini, yazabileceğini ve çalıştırabileceğini belirler. "Permission denied" hatalarının, yüklenmeyen dosyaların, çalışmayan scriptlerin ve reddedilen SSH anahtarlarının büyük kısmı yanlış izinlerden ya da yanlış dosya sahibinden kaynaklanır. İzinleri okumayı bir kez öğrendiğinizde bu sorunların çoğunu birkaç komutla çözebilirsiniz.
Bu rehberde izinlerin nasıl okunduğunu, chmod ve chown komutlarını, web siteleri ve SSH dosyaları için doğru izinleri ve "Permission denied" hatasının nasıl çözüleceğini anlatıyoruz.
İzinleri okuma: ls -l
Sunucunuza SSH ile bağlandıktan sonra bir klasördeki dosyaların izinlerini görmek için:
ls -l
Çıktı şuna benzer:
-rw-r--r-- 1 ahmet www-data 4120 Oct 29 10:12 index.php
drwxr-xr-x 3 ahmet www-data 4096 Oct 29 10:10 uploads
İlk sütun izinleri gösterir:
- İlk karakter:
-sıradan dosya,dklasör,lsembolik bağlantı. - Sonraki üç karakter: Dosya sahibinin (user) izinleri.
- Ortadaki üç karakter: Grubun (group) izinleri.
- Son üç karakter: Diğer herkesin (others) izinleri.
Üçüncü ve dördüncü sütunlar dosyanın sahibini ve grubunu gösterir; yukarıdaki örnekte sahip ahmet, grup www-data.
r, w ve x ne demek?
| Harf | Dosyada | Klasörde |
|---|---|---|
r | İçeriği okuma | İçindeki dosyaları listeleme |
w | İçeriği değiştirme | İçinde dosya oluşturma, silme, yeniden adlandırma |
x | Program ya da script çalıştırma | Klasöre girme ve içindeki dosyalara erişme |
Klasörlerdeki x izni sık gözden kaçar: Bir klasörde x yoksa içindeki dosyaların izinleri ne olursa olsun onlara erişilemez.
Sayısal izinler: 755, 644, 600
Her izin bir sayıya karşılık gelir: r = 4, w = 2, x = 1. Sahip, grup ve diğerleri için bu sayılar toplanır:
| Sayı | Harflerle | Anlamı | Nerede kullanılır? |
|---|---|---|---|
755 | rwxr-xr-x | Sahip her şeyi yapar, diğerleri okur ve girer | Klasörler, çalıştırılabilir scriptler |
644 | rw-r--r-- | Sahip okur ve yazar, diğerleri yalnızca okur | Web sitesi dosyaları |
700 | rwx------ | Yalnızca sahip erişir | ~/.ssh gibi özel klasörler |
600 | rw------- | Yalnızca sahip okur ve yazar | Şifre ve anahtar dosyaları |
640 | rw-r----- | Sahip okur ve yazar, grup yalnızca okur | Uygulamanın okuması gereken ayar dosyaları |
Örneğin 7 = 4 + 2 + 1 (rwx), 5 = 4 + 1 (r-x), 6 = 4 + 2 (rw-).
chmod: izinleri değiştirme
chmod 644 index.php
chmod 755 uploads
chmod 600 .env
Harflerle de değiştirebilirsiniz. u sahip, g grup, o diğerleri, a herkes demektir:
chmod u+x deploy.sh # sahibe çalıştırma izni ekle
chmod g-w config.php # gruptan yazma iznini kaldır
chmod o-rwx yedekler # diğerlerinin bütün izinlerini kaldır
Bir klasörün içindekilerle birlikte izinlerini değiştirmek için -R kullanılabilir, ama chmod -R 755 dosyaları da çalıştırılabilir yapar. Klasörlere ve dosyalara farklı izin vermek için find daha doğrudur:
find /var/www/site -type d -exec chmod 755 {} \;
find /var/www/site -type f -exec chmod 644 {} \;
chown: dosya sahibini değiştirme
sudo chown ahmet index.php
sudo chown ahmet:www-data index.php
sudo chown -R ahmet:www-data /var/www/site
kullanıcı:grup biçimi sahibi ve grubu birlikte değiştirir. Web sitelerindeki izin sorunlarının çoğu, dosyaların root'a ait olmasından kaynaklanır; örneğin dosyaları sudo ile kopyaladığınızda ya da git clone'u root olarak çalıştırdığınızda.
Web sitesi dosyaları için doğru izinler
Ubuntu ve Debian'da Nginx ve Apache www-data kullanıcısıyla, AlmaLinux'ta Nginx nginx, Apache ise apache kullanıcısıyla çalışır. Kendi VDS'inizde yaygın ve güvenli bir düzen:
- Dosyaların sahibi sizin kullanıcınız, grubu web sunucusunun grubu olur:
chown -R ahmet:www-data /var/www/site - Klasörler
755, dosyalar644olur. - Uygulamanın yazması gereken klasörler (WordPress'te
wp-content/uploads, Laravel'destoragevebootstrap/cache) grup yazma izni alır:chmod -R 775 storage - Veritabanı şifresi içeren ayar dosyaları (
wp-config.php,.env)640ya da600olur.
PHP-FPM'i kendi kullanıcınızla çalıştırıyorsanız grup yazma iznine gerek kalmaz; dosyaların sahibi zaten PHP'nin çalıştığı kullanıcıdır. Laravel'in kurulumunu Laravel sunucuya kurulum, Nginx'i Nginx kurulumu rehberimizde anlattık.
Paylaşımlı web hostingde PHP sizin hesabınızın kullanıcısıyla çalıştığı için klasörlerde 755, dosyalarda 644 yeterlidir. İzinleri cPanel ya da DirectAdmin dosya yöneticisinden ya da FTP programınızdan değiştirebilirsiniz; ayrıntılar FTP ve SFTP nedir? yazımızda.
Asla chmod 777 kullanmayın
777, sunucudaki her kullanıcının ve her sürecin o dosyayı değiştirebileceği anlamına gelir. Bir web sitesinde ele geçirilen tek bir eklenti bile bu dosyalara zararlı kod yazabilir. Bir şey yalnızca 777 ile çalışıyorsa sorun izin değil, dosyanın sahibidir; chown ile dosyayı doğru kullanıcıya verin. Saldırıya uğramış bir sitede yapılacakları Site hacklendi, ne yapmalı? rehberimizde anlattık.
SSH dosyaları için izinler
SSH, anahtar dosyalarının izinleri fazla açıksa onları kullanmayı reddeder:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Kendi bilgisayarınızdaki özel anahtar dosyası (~/.ssh/id_ed25519) da 600 olmalıdır. Klasörün ve dosyanın sizin kullanıcınıza ait olduğunu da kontrol edin; root olarak oluşturulan bir authorized_keys dosyası anahtarla girişi bozar.
"Permission denied" hatasını çözme
- Dosyanın sahibine ve izinlerine bakın:
ls -l dosya - Yol üzerindeki bütün klasörleri kontrol edin. Aradaki tek bir klasörde
xizni yoksa dosyaya erişilemez.namei -lbütün yolu tek seferde gösterir:
namei -l /var/www/site/public/index.php
- İşlemin hangi kullanıcıyla çalıştığını öğrenin. Web sunucusu, PHP-FPM ya da bir systemd servisi sizden farklı bir kullanıcıyla çalışıyor olabilir:
ps -eo user,comm | grep -E 'nginx|php|apache' - Sahibi ya da izni düzeltin;
777vermeyin.
Temel Linux komutlarını Linux komutları yazımızda topladık.
Özel izinler: setuid, setgid ve sticky bit
Bazen dört haneli izinlerle karşılaşırsınız:
- Sticky bit (
1777):/tmpgibi herkesin yazabildiği klasörlerde, kullanıcıların yalnızca kendi dosyalarını silebilmesini sağlar. - setgid (
2775) klasörlerde: Klasörde oluşturulan yeni dosyalar klasörün grubunu alır. Birden fazla kullanıcının aynı proje klasöründe çalıştığı durumlarda kullanışlıdır. - setuid: Bir programın, onu çalıştıranın değil dosya sahibinin yetkisiyle çalışmasını sağlar.
passwdgibi sistem programlarında kullanılır; kendi dosyalarınıza vermeyin.
Nodesty sunucularında dosya izinleri
Nodesty AMD Ryzen 9 9950X VDS ve AMD EPYC 7763 VDS paketlerinde tam root erişimiyle dosya sahiplerini ve izinleri dilediğiniz gibi düzenleyebilirsiniz. Sunucu yönetimiyle uğraşmak istemiyorsanız web hosting paketlerimizde PHP sizin hesabınızın kullanıcısıyla çalışır; izinleri cPanel ya da DirectAdmin dosya yöneticisinden birkaç tıkla değiştirebilirsiniz.
Sıkça Sorulan Sorular
755 ve 644 ne anlama gelir?
755, dosya sahibinin okuyup yazıp çalıştırabildiği, grubun ve diğer herkesin yalnızca okuyup çalıştırabildiği anlamına gelir; klasörler için yaygın izindir. 644 ise sahibin okuyup yazabildiği, diğerlerinin yalnızca okuyabildiği anlamına gelir; web sitelerindeki sıradan dosyalar için doğru izindir.
Neden chmod 777 kullanmamalıyım?
777, sunucudaki her kullanıcının ve her sürecin o dosyayı değiştirebileceği anlamına gelir. Bir web sitesinde ele geçirilen tek bir eklenti bile bu dosyalara zararlı kod yazabilir. Bir şey 777 olmadan çalışmıyorsa sorun izinde değil, dosyanın sahibindedir; chown ile doğru kullanıcıya verin.
chmod ile chown arasındaki fark nedir?
chmod, bir dosyada kimin ne yapabileceğini, yani okuma, yazma ve çalıştırma izinlerini değiştirir. chown ise dosyanın sahibini ve grubunu değiştirir. Web sitelerindeki izin sorunlarının çoğu yanlış izinden değil, dosyaların yanlış kullanıcıya ait olmasından kaynaklanır.
Web hostingde dosya izinlerini nasıl değiştiririm?
cPanel ve DirectAdmin dosya yöneticilerinde bir dosyaya sağ tıklayıp izinleri değiştirebilir ya da FTP programınızda dosya özelliklerinden izin değerini yazabilirsiniz. Paylaşımlı hostingde klasörler için 755, dosyalar için 644 genellikle doğru değerdir.
SSH anahtarım neden reddediliyor?
SSH, anahtar dosyalarının izinleri fazla açıksa onları güvensiz sayıp kullanmaz. Sunucuda ~/.ssh klasörünün 700, authorized_keys dosyasının 600 izninde ve ikisinin de sizin kullanıcınıza ait olduğundan emin olun. Kendi bilgisayarınızdaki özel anahtar dosyası da 600 olmalıdır.
Sudo kullanmadan dosyayı değiştiremiyorum, ne yapmalıyım?
Dosya root ya da başka bir kullanıcıya ait olabilir. Düzenli olarak sizin ya da uygulamanızın değiştirmesi gereken dosyaları chown ile ilgili kullanıcıya verin. Sistem dosyalarını ise sudo ile düzenlemeye devam edin; onları normal kullanıcıya vermeyin.
Yazar hakkında
Nodesty Ekibi · Altyapı ve Destek
Nodesty ekibi sunucularımızı, ağımızı ve DDoS korumamızı her gün işletir ve müşteri destek taleplerini 7/24 yanıtlar. Bu rehberler o deneyimden yazılır.
İlgili yazılar

Sunucu Saat Dilimi ve NTP: Linux Saat Ayarı Rehberi
Linux sunucuda saat dilimi ve NTP nasıl ayarlanır? timedatectl, UTC mi yerel saat mi, chrony ve timesyncd, cron, günlükler, 2FA ve Windows Server.

Docker Compose ile WordPress Kurulumu
Docker Compose ile WordPress nasıl kurulur? MariaDB ve WordPress konteynerleri, .env ile şifreler, Nginx ve SSL, yükleme sınırları, yedek ve güncelleme.

Ollama Kurulumu: Kendi Sunucunuzda Yapay Zeka Modeli Çalıştırma
Ollama ile kendi sunucunuzda yapay zeka modeli çalıştırma: kurulum, model ve RAM seçimi, API kullanımı, Open WebUI, güvenli erişim ve işlemci kullanımı.