İçeriğe geç

Linux'ta Dosya İzinleri: chmod ve chown Hatasız Kullanım

Orta 15 dk Güncellendi:

Kısa cevap

Linux'ta dosya izinleri, dosyaları kimin okuyabileceğini, yazabileceğini veya çalıştırabileceğini kontrol eder. `chmod` ve `chown` komutları izinleri ve sahipliği değiştirir, ancak yanlış kullanım 403 Forbidden gibi hatalara veya erişim sorunlarına yol açabilir. Hatalardan kaçınmak için doğru sözdizimini ve en yaygın senaryoları öğrenin.

Sorun nasıl anlaşılır

  • Web sunucusu, erişilebilir olması gereken dosyalar için 403 Forbidden hatası veriyor
  • Kullanıcı olarak oturum açmış olmanıza rağmen dosyadaki değişiklikleri kaydedemiyorsunuz
  • Betik veya program uygun izinlere sahip olmasına rağmen çalıştırılamıyor
  • Dosyaları taşıdıktan sonra sahiplik ve izinler yanlış
  • FTP/SFTP istemcisi üzerinden dosyaya erişim denemesi Permission denied hatası veriyor

En yaygın nedenler

Yanlış ayarlanmış izinler

777 veya 666 gibi izinler çok fazla yetki verir ve güvenlik sorunlarına veya web sunucusuyla çakışmalara neden olabilir.

Yanlış dosya sahibi

Dosya root veya yanlış kullanıcıya ait olduğundan web sunucusu veya uygulama dosyaya erişemiyor.

Uygun olmayan grup

Dosya, gerekli izinlere sahip olmayan bir gruba ait veya kullanıcı uygun grupta değil.

Kopyalama sırasında devralınan izinler

İzinleri korumadan dosya kopyalama (ör. `-p` olmadan `cp`), kopyaya yeni sahip ve umask değerine göre izinler atar.

Yanlış umask değeri

Sistem umask değeri, yeni dosya ve klasörlerin varsayılan izinlerini etkileyebilir.

Adım adım çözüm

  1. 1

    Mevcut izinleri ve sahipliği kontrol edin

    Dosyanın bulunduğu dizinde ls -l komutunu çalıştırın. Çıktı; izinleri, bağlantı sayısını, sahibi, grubu, boyutu ve tarihi gösterir. Örneğin, -rw-r--r-- 1 kullanici grup 1234 Oca 1 12:00 dosya.txt sahibin okuma/yazma, grubun okuma, diğerlerinin okuma izni olduğu anlamına gelir.

  2. 2

    İzin gösterimlerini anlayın

    Standart izinler üç basamaktan oluşur (sahip, grup, diğerleri). Her basamak şu değerlerin toplamıdır: 4=okuma, 2=yazma, 1=çalıştırma. Örneğin, 644 sahip için rw-, grup ve diğerleri için r-- anlamına gelir. 755 sahip için rwx, grup ve diğerleri için r-x anlamına gelir.

  3. 3

    chmod ile izinleri değiştirin

    chmod komutunu sekizlik veya sembolik gösterimle kullanın. İzinleri dosya sahibi veya root kullanıcısı değiştirebilir. Örneğin, chmod 644 dosya.txt izinleri rw-r--r-- olarak ayarlar. Herkesin erişebileceği ancak yalnızca sahibin yazabileceği bir klasör için chmod 755 klasor kullanın. Sembolik olarak: chmod u+x betik.sh sahibe çalıştırma izni ekler.

  4. 4

    chown ile sahipliği değiştirin

    chown komutu genellikle root veya sudo gerektirir. chown kullanici:grup dosya sahibi ve grubu değiştirir. Örneğin, sudo chown www-data:www-data index.php sahibi ve grubu www-data olarak ayarlar. Özyinelemeli değişiklik için -R kullanın (ör. sudo chown -R www-data:www-data /var/www/html). Özyinelemeli değişiklik tüm dosya ve klasörleri kapsayacağından önce mevcut durumu kaydedin (ls -lR) veya yedek alın.

  5. 5

    Paylaşımlı erişim için grupları kullanın

    Birden fazla kullanıcının bir dosyaya erişmesi gerekiyorsa, onları ortak bir gruba ekleyin ve grup izinlerini ayarlayın. Örneğin, chmod 664 dosya ve chgrp ortak_grup dosya. Bu gruptaki kullanıcılar okuma/yazma erişimine sahip olur.

  6. 6

    Özel izinleri ayarlayın (setuid, setgid, sticky)

    Setuid (chmod u+s) programın sahibinin ayrıcalıklarıyla çalıştırılmasını sağlar. Klasörde setgid (chmod g+s), yeni dosya ve alt klasörlerin klasörün grubunu devralmasını sağlar. Klasörde sticky bit (chmod +t), silme işlemine çoğunlukla dosya sahibi, klasör sahibi ve root kullanıcısının izin vermesini sağlar. Bunları dikkatli kullanın.

  7. 7

    umask ile varsayılan izinleri değiştirin

    umask komutu mevcut maskeyi gösterir. Yeni değer umask 022 ile ayarlanır; bu, yeni dosyaların 644, klasörlerin 755 alacağı anlamına gelir. Bu yalnızca geçerli oturumu etkiler; kalıcı yapmak için ~/.bashrc veya /etc/profile dosyasını düzenleyin.

  8. 8

    Değişiklikleri kontrol edin ve test edin

    Değişikliklerden sonra izinleri kontrol etmek için ls -l komutunu tekrar çalıştırın. İlgili kullanıcı olarak erişimi test edin (ör. sudo -u www-data ls /var/www/html). Uygulamanın hatasız çalıştığından emin olun.

Hiçbir şey işe yaramazsa

İzinlerle ilgili sorunlar devam ediyorsa, SELinux veya AppArmor'un etkin olup olmadığını ve erişimi engelleyip engellemediğini kontrol edin. getenforce (SELinux) veya aa-status (AppArmor) komutu durumu gösterebilir. Ayrıca, hata ayrıntıları için web sunucusu günlüklerini (/var/log/nginx/error.log veya /var/log/apache2/error.log) kontrol edin. 777 izinlerinden kaçının. Sorunun izinlerden kaynaklanıp kaynaklanmadığını test etmeniz gerekiyorsa, bunu sitenin bir kopyasında veya test ortamında yapın ve önceki izinleri hemen geri yükleyin. Gelişmiş durumlar için setfacl ve getfacl ile ACL (Erişim Kontrol Listeleri) belgelerine başvurun.

Tekrarlanmaması için

  • 777 ve 666 izinlerinden kaçının; gereken en az izinleri kullanın.
  • Web uygulamalarının dosyalarındaki sahipliği ve izinleri düzenli olarak kontrol edin.
  • Herkese izin vermek yerine paylaşımlı erişim için grupları kullanın.
  • Kopyalarken izinleri ve zaman damgalarını korumak için `cp -p` kullanın; sahipliği ise uygun yetkilere sahip olduğunuzda koruyun.

Ne zaman uzmana başvurmalı

Uygulamanız için hangi izinlerin gerektiğinden emin değilseniz veya izin değişiklikleri sitenin çalışmasını kesintiye uğratıyorsa, bir IT uzmanına başvurun. Ayrıca, izinlerle ilgili bir güvenlik olayından şüpheleniyorsanız, bunun bir profesyonel tarafından incelenmesi daha iyidir.

BT altyapı bakımı · Sunucular, ağlar, yedekleme, güvenlik ve yardım masası

Sık sorulan sorular

chmod ve chown arasındaki fark nedir?

`chmod` sahip, grup ve diğerleri için erişim izinlerini (okuma, yazma, çalıştırma) değiştirir. `chown` dosyanın sahibini ve grubunu değiştirir. Erişimin doğru yönetimi için her iki komut da gereklidir.

Neden chmod 777 kullanmamalısınız?

777 izinleri herkesin dosyayı okumasına, yazmasına ve çalıştırmasına olanak tanır; bu büyük bir güvenlik riskidir. Saldırganlar dosyayı değiştirebilir veya kötüye kullanabilir. Her zaman çalışma için gereken en az izinleri kullanın.

Yalnızca klasörlerin izinlerini, dosyaların değil, nasıl değiştiririm?

Klasörler için `-type d` ile `find` kullanın: `find /yol -type d -exec chmod 755 {} \;`. Dosyalar için `-type f` ve `chmod 644` kullanın.

Paylaş
Çözüm bulamadınız mı?AI BT asistanı 7/24 hizmetinizde. Sorunu anlatın veya hatanın ekran görüntüsünü gönderin, durumunuza özel talimat alın.AI BT asistanına sorun