Bir klasöre ve alt klasörlerine ve dosyalarına okuma yazma izni nasıl verilir?


10

Localhost /var/www/dosyamın ve alt klasörlerinin sahipliğini değiştirdim ve ona izin verdim 777. Ancak, yeni bir klasör eklediğimde yeni klasör otomatik olarak bu izni almıyor. Yeni bir klasör veya dosya eklersem aynı izni alması için bir klasör 777'ye nasıl sonsuza kadar izin verebilirim?


4
LÜTFEN bu nedenleri
Marco Ceppi

777 kötü bir fikir . Ancak ACL kullanmak çok iyi olabilir. Sizin için iyi çalışıp çalışmadığını görmek için lütfen ACL'deki bu çözümü okuyacak mısınız?

1
İlgili olarak, tüm dizinleri chmod olarak tüm dizinleri find . -type d -exec chmod 777 {} +777 olarak değiştirmek için kullanabilirsiniz . Unutmayın, daha iyi sonuç almak için root olarak giriş yapmanız ve klasörde olduğunuzdan emin olmanız gerekir.
Redy S

Yanıtlar:


1

Yeni oluşturulan dosyalar için izinler umask tarafından ayarlanır


u / var / www / writable yapmak için komut yazabilir ve ben son zamanlarda eklemek site için aynı izni (777) olsun ki izin vermek.
kamal

1
Web sunucunuza 777 izni vermek iyi değildir.
saji89

Lütfen daha fazla ayrıntı ekler misiniz?
saji89

@ Vojtech Trefny. Bağlantı şu anda çalışmıyor. 404 Bulunamadı diyor.
all4naija

12

Özyinelemeli seçeneği istediğiniz zaman kullanabilirsiniz. sudo chown -R username /var/www


Daha fazla oy almanız gerekiyor!
Sheharyar

10

Diğerlerinin de belirttiği gibi /var/www, özellikle üretimde 777 izin vermek gerçekten kötü bir fikir.

Daha iyi bir çözüm, yalnızca dosyaları değiştirmeniz gereken kullanıcılara yazma izinleri vermektir. Bunu yapmanın yollarından biri:

  • yeni bir grup oluştur

  • /var/wwwbu gruptaki verileri değiştirmesi gereken kullanıcıları ekle

  • /var/wwwgrubun sahipliğini tekrar tekrar değiştirme

  • set umasküzerinde /var/wwwöylesine yeni oluşturulan tüm dosyaların Oluşturduğumuz grupta aittir.

Başka bir seçenek de, yalnızca onlara ihtiyaç duyan kullanıcılara yazma izinleri vermek için ACL'yi kullanmak olacaktır.

Burada sunucu hatasıyla ilgili ayrıntılı talimatlar verilmiştir .

Genellikle, web sunucusunun veya diğer ağ hizmetlerinin veya sistem kullanıcı hesaplarının web sunucusu tarafından sunulan dosyalara yazma izni olmamalıdır, çünkü bu isteğe bağlı kod yürütme olasılığını açar.


2

Seçtiğiniz /etc/apache/envvarseditör ile kök olarak düzenlemelisiniz .

Örnek: ALT+F2
gksudo gedit /etc/apache2/envvars

Dosyanın sonuna gidin ve bir satır ekleyin umask XXX.

Burada umask, istenen izinler değerinin ikili değeridir.
774 için bu 003 olurdu. 777 kötü fikir için 000 olurdu.

Kayıt etmek.

Apache'yi yeniden başlatın.

Misal: sudo apache2ctl restart

Bu yalnızca apache kullanıcısı tarafından yeni oluşturulan dosyaları / klasörleri etkiler.

Ek not, okuma ve yazma kullanıcı, grup veya herhangi bir yuvada 6'dır.


0

Ayrıca, bazı "kutunun dışında" çözümü http sunucunuzu farklı bir klasör kullanacak şekilde yapılandırmaktır. Apache kullanıyorsanız, yapılandırma dosyalarını düzenleyin. Bu şekilde / var / www cadı izinlerini değiştirmek zorunda kalmazsınız kötü fikir (potansiyel güvenlik sorunları).

Ve umask sorunuzun cevabı. Yeni oluşturulan klasörler ve dosyalar için varsayılan ayrıcalıkları kısıtlamak için kullanılabilir. Ve dağıtım geliştiricileri bunu bazı sistem klasörlerine erişimi kısıtlamak için kullanma eğilimindedir.


0

/var/wwwDosyaları ve dizinleri değiştirmek için yazma erişimine sahip olmak istediğinizi düşünüyorum . En iyi çözüm yüklemek apache2-mpm-itkve sanal ana bilgisayar yapılandırma dosyasında eklemek olduğunu düşünüyorum /etc/apache2/sites-available/default:

<IfModule mpm_itk_module>
    AssignUserId your-username your-group
</IfModule>

ve chown your-username\: /var/www -Rvbu sanal ana bilgisayar için apache UID / GID'nizle çalışacak ve dosyaları düzenleyebileceksiniz. PHP tarafından oluşturulan dosyalar bile UID / GID'nize sahip olacaktır

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.