หากเราตรวจสอบความเป็นเจ้าของ site1 เราจะพบสิ่งนี้
ls -ld /var/www/site1/
drwxr-xr-x 2 root root 4096 Oct 24 21:06 site1/
ซึ่งหมายความว่าไดเรกทอรีเป็นเจ้าของโดยผู้ใช้รูทกลุ่มราก ในขณะที่ผู้ใช้รูทมีสิทธิ์ในการเขียน (รวมถึงสิทธิ์ในการอ่านและเรียกใช้งาน) ไปยังไดเรกทอรีรากของกลุ่มจะมีสิทธิ์อ่านและดำเนินการเท่านั้น
เราจะต้องการเปลี่ยนความเป็นเจ้าของกลุ่มเป็นกลุ่ม(ใหม่)และเพิ่ม user1 ให้กับกลุ่มนั้น เราจะให้สิทธิ์ในการเขียนแก่กลุ่มนั้นเช่นกัน
สร้างกลุ่มใหม่
sudo addgroup site1
เพิ่ม user1 ให้กับกลุ่มที่สร้างขึ้นใหม่
sudo adduser user1 site1
ตรวจสอบว่า user1 อยู่ในกลุ่มนั้นจริงๆ
groups user1
ผลลัพธ์ควรเป็นรายการที่ต้องการ
user1 : <other-groups> site1
ตอนนี้เราสามารถเปลี่ยนความเป็นเจ้าของกลุ่มของไดเรกทอรีที่คุณต้องการ
sudo chown -vR :site1 /var/www/site1/
changed ownership of `/var/www/site1/' from root:root to :site1
ให้สิทธิ์การเขียนแก่เจ้าของกลุ่มใหม่นี้
sudo chmod -vR g+w /var/www/site1/
mode of `/var/www/site1/' changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)
ตรวจสอบว่ามีการเปลี่ยนแปลงทั้งหมดหรือไม่
ls -ld /var/www/site1/
drwxrwxr-x 2 root site1 4096 Oct 24 21:06 /var/www/site1/
ดังนั้นไดเรกทอรีนี้จึงเป็นเจ้าของโดยผู้ใช้รูทกลุ่ม site1 ทั้งผู้ใช้รูทและกลุ่มไซต์ 1 มีสิทธิ์ในการเขียน (รวมถึงสิทธิ์ในการอ่านและเรียกใช้) ไปยังไดเรกทอรี ผู้ใช้ที่อยู่ในกลุ่มไซต์ 1 จะได้รับสิทธิ์ทั้งหมดที่มอบให้กับกลุ่มนั้น
ตอนนี้เข้าสู่ระบบในฐานะผู้ใช้ 1 ย้ายไปที่ไดเรกทอรี site1 และพยายามที่จะสร้างไฟล์ในไดเรกทอรีนั้น
echo "My User1 Site" > index.html
bash: index.html: Permission denied
สิ่งนี้ล้มเหลวเนื่องจากเป็นไปได้ว่ากลุ่มหลักของ user1 ไม่ใช่ site1 ดังนั้นเปลี่ยนเป็นกลุ่มนั้น
newgrp - site1
ลองสร้างไฟล์ขึ้นมาใหม่ (ระวังว่าคุณถูกย้ายไปที่โฮมไดเร็กตอรี่ของ user1 หลังจากเปลี่ยนกลุ่ม), ตอนนี้ควรใช้งานได้แล้ว เนื่องจากไฟล์ที่สร้างขึ้นจะมีสิทธิ์ในการอ่านทั่วโลก apache (หรือเว็บเซิร์ฟเวอร์ของคุณ) จึงไม่ควรประสบปัญหาในการเข้าถึงไฟล์เหล่านั้น
แก้ไข
นอกจากนี้ตามที่dan08แสดงความคิดเห็นคุณจะต้องเพิ่ม www-data ไปยังกลุ่มไซต์ 1
sudo adduser www-data site1
ในดิสทริบิวชัน (ไม่ใช่ทั้งหมด) www-data คือผู้ใช้ที่เว็บเซิร์ฟเวอร์ Apache ทำงาน นอกจากนี้ยังหมายความว่าทุกสิ่งที่ทำโดย Apache (โดยเฉพาะอย่างยิ่งรวมถึงสคริปต์ PHP) จะกระทำโดยได้รับอนุญาตจากผู้ใช้ www-data (และกลุ่ม www-data) โดยค่าเริ่มต้น WordPress ใช้ข้อมูล www-data ของผู้ใช้เพื่อเขียนไฟล์
หากคุณต้องการดูว่าเว็บเซิร์ฟเวอร์ apache ทำงานอย่างไรให้ออกคำสั่ง
ps aux | grep apache2 | less