27 Kasım 2015

Linux'de CHMOD ve Dizin içindeki Tüm Klasör ile Dosya izinlerini Ayarlamak

Linux'de Dizin içindeki Tüm Dosya izinlerini Ayarlamak

Linux sunucularda barınan sitelerin 500 Internal Server Hatası genelde dosya ve dizin izinlerinden kaynaklanmaktadır. İzin ayarları değişmiş olan dosya ve klasörü cPanel'den tek tek inceleyip manüel düzeltebilirsiniz. Fakat bu işlem bazen çok vakit alabilir. İzin ayarı değişmiş dosyayı public_html içinde manüel bulmak zaman alabilir.

Sunucuya bağlanarak birkaç komutla tüm dosya ve dizin izinlerini otomatik verebiliriz. Dosyalarda maksimum izin 644 dizin yani klasörlerde ise 755 olup verilmesi istenen Apache Handler'dır.

Ben bu işlemi bir sitenin tüm dosyalarının barındığı public_html içinde yapacağım. Bu ana dizinin altındaki tüm dosyalar(örnek: dosya.php) ve dizinlerin ayarlarını varsayılan değerlere çekeceğim.

Bu işlemi yapmadan önce public_html klasörünü ve tüm içeriğini /tmp içine aşağıdaki komutla yedekleyelim. (Aşağıdaki burakavcioglu sizin Client adınız dır yani username)

root@sunucu [~]# cp -rd /home/burakavcioglu/public_html /tmp/

Yedek aldıktan sonra aşağıdaki komutları sırasıyla uygulayalım;

# chown -R burakavcioglu /home/burakavcioglu/public_html/ 
# chgrp -R burakavcioglu /home/burakavcioglu/public_html/
# chmod 750 /home/burakavcioglu/public_html
# find /home/burakavcioglu/public_html -type f -print0 | xargs -0 chmod 644
# find /home/burakavcioglu/public_html -type d -print0 | xargs -0 chmod 755

Bu işlem sonunda public_html klasörü altındaki tüm dizinler(klasör) 755 ve tüm dosyalar 644 oldu. Siz public_html klasörüne girdikten sonra ls -l diyerek dosyaları listelediniz ve yanlış izin verilmiş dosyayı gördünüz. Aşağıdaki tek satırlık komutu da uygulayabilirsiniz.

chmod 644 /home/burakavcioglu/public_html/dosya.php

Son olarak /tmp içine aldığımız public_html klasörü ve içeriğini komple silelim;

rm -fr /tmp/public_html/


Linux'de Dizin içindeki Tüm Dosya izinlerini Ayarlamak

Dosya ve Dizinler için izin(Permission) işlemleri, CHMOD Komutu Genel Kullanımı

1. Kısım: Dosyan Sahibinin yetkileri (u=user)
2. Kısım: Dosyanın bulunduğu Grubun yetkileri (g=grub)
3. Kısım: Tüm Herkese verilen yetkiler (o=herkes)

r=Read w=Write x=Çalıştırma

Dosya başındaki "d" ibaresi dizin yani klasör demektir "l" ise kısayol olduğunu gösterir.

-rwxr--r-- burak.txt
drwxrwxrwx burak

Örnekle burak.txt dosyası Root olarak üç hakkada sahiptir, grup ve herkese sadece okuma(r) izni verilmiştir. Sondan başlayarak (rwx) olarak üç hane şeklinde incelerseniz izinleri anlayabilirsiniz. Yukarıda verilen ikinci örnekte renklendirerek bahsettim.

burak.txt dosyasında Grup(g) kullanıcılarına yazma(w) izni verelim (Herhangi bir izni verirken "+" herhangi bir izni alırken "-" parametrelerini kullanın);
chmod g+w burak.txt

burak.txt dosyasında Herkese(o) çalıştırma(x) izni verelim;
chmod o+x burak.txt

Dosyanın iznini belirlemek için kullanılan genel komut;
chmod -R 644 sayfa.php

Dizin, klasörün iznini belirlemek için kullanılan genel komut;
chmod -R 755 dosya_dizin

Dosyanın sahibini burakavcioglu kullanıcısı yapmak için;
# chown burakavcioglu burak.txt

Dosyanın bulunduğu grubu burakavcioglu yapmak için;
chgrp burakavcioglu burak.txt

Yukarıdaki iki komutu birleştirip aşağıdaki gibi burakavcioglu (User+Grub) olarak atamak istersek;
# chown burakavcioglu:burakavcioglu burak.txt

Aynı şekilde root (User+Grub) olarak atamak istersek;
chown root:root burak.txt

Bir dizin ve tüm alt dizinlerindeki yetkili kullanıcıyı(burakavcioglu) değiştirmek için (Aynı yöntemle grubuda değiştirebilirsiniz);
# chwon -R burakavcioglu dizinadi

Hiç yorum yok:

Yorum Gönder