777 / var / www altındaki tüm alt klasörleri nasıl bulabilirim?


54

/var/wwwBağlı olduğu bir web sunucusu ve FTP sunucusu çalıştırıyorum /home/user/www.

Her iki dizini de ayarlıyorum chmod 777(yalnızca test için olduğundan beri iyi).

Dosyaları yükleyebilirim /home/user/www, ancak ne zaman yeni bir dizin oluştursam, daima chmod 777bu klasör üzerinde çalışmam gerekiyor .

Aksi halde, göz atmaya çalıştığımda hata mesajı alıyorum

Bu sunucuya erişmek / test etmek / izniniz yok.

İçerideki tüm alt klasörleri /var/wwwherkes tarafından erişilebilir kılmamın bir yolu var mı ? Yoksa izinleri otomatik olarak 777mı ayarlanabilir ? chmod 777Her zaman yazmam çok sinir bozucu .


12
Sadece burada bırakacağım LÜTFEN WEB SUNUCUSU ÜZERİNDE 777 KULLANMAYINIZ . Sorulması gereken daha iyi bir soru "Web sunucumun 777 izinlerini kullanmadan nasıl çalışmasını sağlayabilirim?"
Marco Ceppi

12
üzgünüm bu kötü bir uygulama ve ben bunu cevaplamayı reddediyorum :) Umarım eveyone kabul eder :)
Rinzwind

Yanıtlar:


89

Bu kötü bir uygulamadır, ancak umarım bunu sadece geliştirme için kullanıyorsunuzdur veya başka bir iyi nedeniniz var. Bu -mseçeneği kullanarak bir dizin oluştururken izinleri belirleyebilirsiniz :

mkdir -m 777 dirname

Veya izinleri yinelemeli olarak ayarlayabilirsiniz.

sudo chmod -R 777 /var/www

Bunlardan herhangi birini kullanmadan önce, dosya sisteminizin bu kadar erişilebilir olmasını istiyorsanız gerçekten düşünün.


Düzenleme: Burada Rinzwind tarafından belirtildiği gibi, istediğinizi başarmanın daha iyi bir yoludur.

Hangi grubun /var/wwwdizininizin sahibi olduğunu kontrol edin ve kullanıcıyı o gruba ekleyin.

sudo adduser yourusername group

Grup muhtemelen www-data.

O zaman izinlerini 775 olarak ayarlamakta sorun yok.


4
Bu istediğini yapar ama lütfen önce bunu oku. Neden / var / www chmod 777 olmasın ? Bu gerçekten tavsiye edilmez.
Warren Hill

8
Lütfen insanlara kötü pratik bir yöntemle yardım etmeyin. Nasıl yapılacağını
açıklarsanız

4
Eğitim önce gelir. İnsanların makinelerini mahvetmelerine yardımcı olmak Linux yolu değildir. Bu yüzden sana kesinlikle katılmıyorum.
Rinzwind

2
Asker, bunun yalnızca test için olduğunu söyledi. Geliştirme tarafınızın kolayca erişilebilir olmasını istediğinizi kesinlikle anlayabilirim, böylece daha hızlı çalışabilirsiniz. Ona bir üretim sunucusuyla yapacak kadar aptal olmadığı şüphesinden faydalanacağım.
Dan

1
@ dan08 Ana dizininiz dahil olmak üzere daha iyi test yöntemleri vardır. Bkz askubuntu.com/questions/46331/... ve kimbriggs.com/computers/computer-notes/linux-notes/... . Bu hedeflere ulaşmanın güvenli yolları vardır;)
Panter

7

Unix'teki dosyalar ve dizinler üç tür izne sahip olabilir: read ( r), write ( w) ve execute ( x). Her izin onveya offüç kullanıcı kategorisinin her biri için olabilir : dosya veya dizin sahibi; sahibi ile aynı gruptaki diğer insanlar; ve diğerleri. Bir dosyanın modunu değiştirmek için chmod komutunu kullanın. Genel formu chmod X @ Y dosya1 dosya2 ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access 


3

Kamu hizmeti duyurusu:


Sorunları çözmek için asla chmod 777 kullanmayın


  • Halka açık herhangi bir hizmeti, özellikle de web uygulamalarını (ör. PHP) kullanıyorsanız, bu büyük bir güvenlik riskidir.

    İşletim sisteminin güvenlik modeli, pek çok hizmetin (web sunucunuz gibi) dosyaları değiştirmelerini engellemek için daha az ayrıcalıkla çalıştığını varsaymaktadır. Dosyalarda 777 ayarı bu tasarımı bozuyor.

    Uzaktaki bir kullanıcı dosyalara yazabilir veya yükleyebilir ve ardından sunucuyu (ya da sisteminizdeki başka bir işlemi) okuyabilir ya da çalıştırabilir. Komut dosyalarında veya yazılımda buna izin veren kusurlar olabilir. Dünyada yazılabilir dizinler varsa, bunun olabileceği her şekilde kilitlemek çok zor.

  • Bazı sistem dizinlerinde (/ usr, / etc, / var vb.) Kullanılırsa, sisteminizi şaşırtıcı şekillerde bozabilir.

    Bazı önemli sistem dosyalarının çalışması için setuid / setgid izinleri gibi özel izinler gerekir. Örneğin, sudo. Sistemin kendisi tarafından ayarlanan dizinler ve dosyalar üzerindeki dosya izinlerini değiştirmekten kaçının.

  • Geri almanın ve tüm eski izinleri geri almanın bir yolu yok.

    Diğer bir deyişle, daha önce farklı izinlere sahip dosya ve klasörleriniz varsa, bu belirli izinlere geri dönmenin bir yolu yoktur - yalnızca hepsini aynı şeyde değiştirmek için, belirli dosyalarda gereken belirli izin ayarlarını kaybedebilir.

  • Her zaman elde etmek istediğinizi elde etmenin daha uygun bir yolu vardır.

Bu durumda, yalnızca web sunucunuzun bir dizini okuyabilmesini istediğiniz görünmektedir . Dünyada yazılabilir izin vermek, yapmanız gerekenden çok daha fazla.

Web sunucusunun neden bu dizini okuyamadığını anlayın (ipucu: muhtemelen, ana dizininiz dünyaca okunabilir olmadığındandır. Dünyada okunabilirler dünya tarafından yazılabilir olanlardan çok daha güvenlidir - ana dizininizi 755 gibi bir şeye ayarlayın veya Bu www dir evinizin dışına / var / www veya / srv) gibi bir yere taşıyın.


0

Bu bana işe yaramaz.

sudo chmod -f 777 /path/to/your/file/or/directory

-fAyrıca kullanmak zorundayım .

sudo chmod -R -f 777 /path/to/your/file/or/directory

0

İzinleri ve / veya sahipliğini, memnun olduğunuz başka bir dosyadan kopyalamak istiyorsanız, sudo chmod --reference = yol / dosya / / dosya / başvuru yolu / başvuru yolunu / dosya / / / / / değiştirmek / permissino / etmek

Ve aynı şeyi dosya sahipliği için de yapabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.