Jika kami memeriksa kepemilikan situs1, kami akan menemukan sesuatu seperti ini,
ls -ld /var/www/site1/
drwxr-xr-x 2 root root 4096 Oct 24 21:06 site1/
Ini berarti bahwa direktori tersebut dimiliki oleh root pengguna, root grup. Meskipun root pengguna memiliki izin menulis (ditambah izin baca dan eksekusi) ke direktori, root grup hanya membaca dan mengeksekusi izin.
Kami ingin mengubah kepemilikan grup ke grup (baru) lain dan menambahkan user1 ke grup tersebut. Kami akan memberikan izin tertulis kepada grup tersebut juga.
Buat grup baru,
sudo addgroup site1
Tambahkan user1 ke grup yang baru dibuat,
sudo adduser user1 site1
Periksa apakah user1 benar-benar dalam grup itu,
groups user1
Outputnya harus berupa daftar,
user1 : <other-groups> site1
Sekarang kita dapat mengubah kepemilikan grup dari direktori yang diinginkan.
sudo chown -vR :site1 /var/www/site1/
changed ownership of `/var/www/site1/' from root:root to :site1
Berikan izin tertulis kepada pemilik grup baru ini,
sudo chmod -vR g+w /var/www/site1/
mode of `/var/www/site1/' changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)
Periksa apakah semua perubahan memang ada,
ls -ld /var/www/site1/
drwxrwxr-x 2 root site1 4096 Oct 24 21:06 /var/www/site1/
Jadi, direktori sekarang dimiliki oleh root pengguna, grup site1. Root pengguna dan grup situs1 memiliki izin menulis (ditambah izin baca dan eksekusi) ke direktori. Setiap pengguna yang tergabung dalam situs grup1 akan menikmati semua hak istimewa yang diberikan kepada grup itu.
Sekarang login sebagai user1, pindah ke direktori site1 dan cobalah untuk membuat file di direktori itu,
echo "My User1 Site" > index.html
bash: index.html: Permission denied
Ini gagal karena kemungkinan besar grup utama user1 bukan site1. Jadi, ubah ke grup itu.
newgrp - site1
Cobalah untuk membuat ulang file (berhati-hatilah karena Anda telah dipindahkan ke direktori home user1 setelah mengubah grup), ini seharusnya berfungsi sekarang. Karena file yang dibuat akan memiliki izin baca dunia, apache (atau server web Anda) tidak akan menghadapi masalah mengaksesnya.
EDIT
Juga, seperti yang ditunjukkan oleh dan08 dalam komentar, Anda perlu menambahkan www-data ke grup site1.
sudo adduser www-data site1
Pada banyak (tidak semua) distribusi, www-data adalah pengguna di mana server web Apache berjalan. Ini juga berarti bahwa semua yang dilakukan oleh Apache (terutama termasuk skrip PHP) akan dilakukan dengan izin data pengguna www (dan juga kelompok data www) secara default. WordPress menggunakan data-pengguna www untuk menulis file.
Jika Anda ingin melihat bagaimana server web apache berjalan, jalankan perintah,
ps aux | grep apache2 | less