Www-data grubuna yazma izni verilmesi


27

Bir web sitesi oluşturuyorum ve işlevin bir kısmı kullanıcı tarafından oluşturulan verileri php ile yazmaktır. Ubuntu 13.04'te nginx kullanıyorum. Şu an sadece test ediyorum ve her şey locahost'taki nginx aracılığıyla servis ediliyor.

PHP betiğim metin dosyasını yazamıyor (bunu manuel olarak yapabilmeme rağmen) ve bunun /var/www/example.com/public_html dizinime yazmak için izinler olduğunu düşünüyorum.

Şu anda ben (iain) bu dizine sahibim fakat / var / www dizini ve içindeki her şeyi sahiplenmeyi www-data kullanıcısına (veya bu grup mu olmalı?) Devretmek ve kendimi eklemek daha mantıklı görünüyor. www-veri grubu. Bunu yapmak için doğru yolu aşağıdaki mi?

useradd -G www-data iain
chown -R www-data:www-data /var/www/example.com
chmod 775 /var/www

Öyleyse bu, www-data grubundaki herhangi birinin şimdi / var / www'de okuyabileceği, yazabileceği ve çalıştırabildiği anlamına mı geliyor?

Yanıtlar:


52

İlk önce useraddyeni bir kullanıcı yaratır. Siz (iain) zaten var olduğundan, usermodonun yerine aramak istiyorsunuz . Yani bu olurdu:

sudo usermod -aG www-data iain
addgroup www-data

( -asizi bu gruba ekleyecek ve üyeliğinizi diğer gruplara aktaracak olan Debian tabanlı sunuculara (Ubuntu dahil) dikkat edin. onlar tekerdi. SUSE-tipi sunucularda seçenek -Ayerine; doğru yapmak için dikkatlice -aGokuyun man usermod.)

İkincisi, apache'nin tam erişime sahip olmasını istemiyorsunuz /var/www: bu potansiyel olarak büyük bir güvenlik ihlalidir. Genel bir kural olarak, yalnızca ihtiyacınız olanlara ve daha fazlasına izin vermeyin (en az ayrıcalık ilkesi ). Bu durumda, yazmak (ve okumak) için apache ( www-data) ve siz ( www-datagrup) gerekir /var/www/example.com/public_html;

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 770 /var/www/example.com/public_html

Düzenleme : orijinal sorunuzu cevaplamak için, evet, herhangi bir üye www-dataartık okuyabilir ve yürütebilir /var/www(çünkü izinlerinizin son kısmı 5 = read + exec). Ancak, -Ranahtarı kullanmadığınız için bu, yalnızca /var/wwwiçerdiği dosyalar ve alt dizinler için geçerlidir. Şimdi, yazıp yazamayacakları başka bir konudur ve belirlemediğiniz gruba bağlıdır /var/www. Sanırım tipik olarak root:root, yani hayır, (muhtemelen) yazamazlar.

2014-06-22 tarihinde düzenleyin : -aGseçeneğin Debian tabanlı sunucularda geçerli olduğuna dikkat edin . Görünüşe göre dağılımı ile değişir, bu yüzden manyürütmeden önce dikkatlice okuyun .


Tamam anladım. / Var / www grubu gerçekten kök: kök. Bağlantı için teşekkürler. Kolaylık için gitmek yerine gerekli olanı verme alışkanlığı içinde olmak daha mantıklı görünüyor. Rehberlik için teşekkürler.
duff

2
Tamam, ben sadece /var/www/example.com/public_html ile yazmayı denedim cp -r php /var/www/example.com/public_htmlve izin verilmedi. Rwxrwx --- bu dizin için izinleri olan www-data grubundayım. Bu neden?
duff

Burada birçok şey olabilir. Örneğin, php'de bazı şeyleri okuma izniniz yoktu ya da usermod'dan sonra çıkış yapmadınız (bundan kaçınmak için bu noktadaki cevabımı addgroup ile güncelledim ve sudo kullanacağımı düşündüm).
Calimo

İlgili tüm cevaplardan www-data:www-data, bu sorun eksik izinlerle çözüldü. Teşekkür ederim.
Eugene,
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.