Site1'in sahipliğini kontrol edersek, bunun gibi bir şey buluruz,
ls -ld /var/www/site1/
drwxr-xr-x 2 root root 4096 Oct 24 21:06 site1/
Bu, dizinin kullanıcı köküne, grup köküne ait olduğu anlamına gelir. Kullanıcı kök dizine yazma izni (artı okuma ve yürütme izinleri) varken, grup kök yalnızca izinleri okuma ve yürütme işlemlerine sahiptir.
Grup sahipliğini başka bir (yeni) gruba dönüştürmek ve bu gruba kullanıcı1 eklemek istiyoruz. Bu gruba da yazılı izin vereceğiz.
Yeni bir grup oluştur
sudo addgroup site1
Yeni oluşturulan gruba user1 ekleyin,
sudo adduser user1 site1
Kullanıcı1'in gerçekten o grupta olup olmadığını kontrol edin,
groups user1
Çıktı şöyle bir liste olmalı,
user1 : <other-groups> site1
Artık istediğiniz dizinin grup sahipliğini değiştirebiliriz.
sudo chown -vR :site1 /var/www/site1/
changed ownership of `/var/www/site1/' from root:root to :site1
Bu yeni grup sahibine yazma izni verin,
sudo chmod -vR g+w /var/www/site1/
mode of `/var/www/site1/' changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)
Tüm değişikliklerin gerçekten orada olduğunu kontrol edin,
ls -ld /var/www/site1/
drwxrwxr-x 2 root site1 4096 Oct 24 21:06 /var/www/site1/
Yani, dizin şimdi kullanıcı kökü, grup site1'e aittir. Hem kullanıcı kökü hem de grup sitesi1, dizine yazma iznine (artı okuma ve yürütme izinleri) sahiptir. Grup siteye1 ait olan herhangi bir kullanıcı, bu gruba verilen tüm ayrıcalıklardan yararlanacaktır.
Şimdi user1 olarak giriş yapın, site1 dizinine gidin ve bu dizinde bir dosya oluşturmaya çalışın,
echo "My User1 Site" > index.html
bash: index.html: Permission denied
Bu başarısız oldu, çünkü büyük olasılıkla birincil kullanıcı kullanıcısı1 site1 değil. Yani, o gruba geçin.
newgrp - site1
Dosyayı yeniden oluşturmayı deneyin (grubu değiştirdikten sonra user1'in ana dizinine taşındığınızdan emin olun), bu şimdi işe yaramalı. Oluşturulan dosyalar dünya çapında okuma iznine sahip olacağından, apache (veya web sunucunuz) bunlara erişirken herhangi bir sorunla karşılaşmamalıdır.
DÜZENLE
Ayrıca, dan08 tarafından belirtildiği gibi , yorumda, site1 grubuna www-veri eklemeniz gerekir.
sudo adduser www-data site1
Pek çok (hepsinde değil) dağıtımda, www-verileri Apache web sunucusunun çalıştığı kullanıcıdır. Bu aynı zamanda Apache (özellikle PHP betikleri dahil) tarafından yapılan her şeyin varsayılan olarak kullanıcı www-data (ve ayrıca www-data gruplandırması) izinleriyle gerçekleştirileceği anlamına gelir. WordPress, dosya yazmak için kullanıcı www verilerini kullanır.
Apache web sunucusunun nasıl çalıştığını görmek istiyorsanız, komutu
ps aux | grep apache2 | less