DFS Namespaces ve DFS Replication ile Coğrafi Yedeklilik Tasarımı
Linux’ta “Permission Denied” Hatası Nasıl Çözülür?
“Permission Denied” hatası, Linux sistemlerinde dosya veya dizin üzerinde gerekli erişim izinlerinin olmamasından kaynaklanır. Bu hata genellikle kullanıcıların okuma, yazma veya çalıştırma (execute) yetkisine sahip olmadığı durumlarda ortaya çıkar. Bu rehberde, hatanın nedenlerini ve adım adım çözüm yöntemlerini inceleyeceğiz.
- Hatanın Temel Sebebi Nedir?
- 1️⃣ Dosya İzinlerini Görüntüleme
- 2️⃣ Çalıştırma İzni Eksikse
- 3️⃣ Dosya Sahipliği (Ownership) Kontrolü
- 4️⃣ Root Yetkisi Gereken İşlemler
- 5️⃣ Dizin Erişim İzinlerini Düzenleme
- 6️⃣ SFTP veya FTP Üzerinden Hata Alıyorsanız
- 7️⃣ SELinux Etkinse (CentOS / RHEL)
- 8️⃣ NFS Paylaşımlarında “Permission Denied”
- 9️⃣ Script İçinde Yanlış Yorum Satırı (Shebang)
- 🔟 Dosya Sistemi Salt Okunur (Read-Only) Durumdaysa
- Sonuç
Hatanın Temel Sebebi Nedir?
Linux, güvenliği sağlamak için her dosya ve dizine ait belirli erişim izinleri tanımlar. Bu izinler üç kullanıcı grubu için geçerlidir:
- Owner (Sahip) – Dosyanın sahibi kullanıcı.
- Group (Grup) – Dosyaya erişimi olan kullanıcı grubu.
- Others (Diğerleri) – Sistemdeki diğer tüm kullanıcılar.
1️⃣ Dosya İzinlerini Görüntüleme
İlk adım olarak dosyanın izinlerini kontrol edin:
ls -l dosyaadi.sh
Çıktı örneği:
-rw-r--r-- 1 root root 1024 Nov 4 22:00 dosyaadi.sh
Burada izinlerin ilk sütunu (-rw-r--r--) şu anlama gelir:
- r: okuma izni
- w: yazma izni
- x: çalıştırma izni
2️⃣ Çalıştırma İzni Eksikse
Bir komut dosyası (.sh) çalıştırırken “Permission Denied” hatası alıyorsanız, yürütme izni eksik olabilir. Çözüm:
chmod +x dosyaadi.sh
Daha sonra dosyayı çalıştırın:
./dosyaadi.sh
3️⃣ Dosya Sahipliği (Ownership) Kontrolü
Dosya başka bir kullanıcıya aitse, mevcut kullanıcı erişim sağlayamaz. Sahipliği değiştirmek için:
sudo chown kullaniciadi dosyaadi.sh
Grubu değiştirmek için:
sudo chgrp grupadi dosyaadi.sh
4️⃣ Root Yetkisi Gereken İşlemler
Bazı dizinler (örneğin /etc veya /usr/local) yalnızca root tarafından değiştirilebilir. Bu durumda komutu sudo ile çalıştırın:
sudo nano /etc/hosts
5️⃣ Dizin Erişim İzinlerini Düzenleme
Eğer bir dizin içinde işlem yaparken hata alıyorsanız:
chmod 755 /hedef/dizin
Bu, dizine herkesin okuma ve çalıştırma izni verir (ama yalnızca sahibi yazabilir).
6️⃣ SFTP veya FTP Üzerinden Hata Alıyorsanız
FTP kullanıcıları genellikle belirli dizinlerle sınırlıdır. chroot yapılandırması veya userdir ayarlarını kontrol edin. Ayrıca:
ls -ld /home/kullanici
Komutu ile dizinin sahipliğini doğrulayın. Sahibi yanlışsa düzeltin:
sudo chown -R kullanici:kullanici /home/kullanici
7️⃣ SELinux Etkinse (CentOS / RHEL)
SELinux aktifse, izinler doğru olsa bile erişimi engelleyebilir. Durumunu kontrol edin:
getenforce
Geçici olarak devre dışı bırakmak için:
sudo setenforce 0
Kalıcı çözüm için doğru context ayarlarını yapın:
sudo restorecon -Rv /var/www/html
8️⃣ NFS Paylaşımlarında “Permission Denied”
Uzak disk paylaşımlarında (NFS) UID/GID eşleşmemesi hataya neden olabilir. Sunucu ve istemcide kullanıcı kimliklerini eşitleyin veya mount işlemini nolock seçeneğiyle yeniden yapın.
9️⃣ Script İçinde Yanlış Yorum Satırı (Shebang)
Bash veya Python script’lerinde ilk satırda doğru yorumlayıcı belirtilmemişse hata alabilirsiniz. Doğru format:
#!/bin/bash # veya #!/usr/bin/python3
🔟 Dosya Sistemi Salt Okunur (Read-Only) Durumdaysa
Eğer disk salt okunur moda geçtiyse hiçbir dosya düzenlenemez. Durumu kontrol edin:
mount | grep ro
Yeniden bağlamak için:
sudo mount -o remount,rw /
Sonuç
“Permission Denied” hatası genellikle basit izin veya sahiplik problemlerinden kaynaklanır. Ancak SELinux, NFS veya salt okunur dosya sistemleri gibi karmaşık senaryolarda da görülebilir. Adım adım izin kontrolü, sahiplik düzenlemesi ve sudo kullanımı ile bu hatayı kolayca çözebilirsiniz. Kurumsal sistemlerde profesyonel destek ve güvenli yapılandırmalar için HostLigo’nun Linux Hosting ve Optimizasyon Hizmeti çözümlerinden yararlanabilirsiniz.