ผมทำงานผ่านวิธีการบริการการใช้งาน Django กับ uWSGI และ Nginx บน Ubuntu 16.04 ในตอนท้ายของ "สร้างไฟล์หน่วย systemd สำหรับ uWSGI" ในบทความที่พวกเขาพูดคุยเกี่ยวกับwww-data
ผู้ใช้ นี่คืออะไรและทำไมจึงสำคัญ
ผมทำงานผ่านวิธีการบริการการใช้งาน Django กับ uWSGI และ Nginx บน Ubuntu 16.04 ในตอนท้ายของ "สร้างไฟล์หน่วย systemd สำหรับ uWSGI" ในบทความที่พวกเขาพูดคุยเกี่ยวกับwww-data
ผู้ใช้ นี่คืออะไรและทำไมจึงสำคัญ
คำตอบ:
เพื่อความปลอดภัย
ไฟล์ไม่สามารถเขียนได้ทั่วโลก พวกเขาถูก จำกัด ให้เป็นเจ้าของไฟล์สำหรับการเขียน
เว็บเซิร์ฟเวอร์จะต้องทำงานภายใต้ผู้ใช้เฉพาะ ผู้ใช้นั้นจะต้องมีอยู่จริง
หากถูกเรียกใช้ภายใต้รูทไฟล์ทั้งหมดจะต้องสามารถเข้าถึงได้โดยรูทและผู้ใช้จะต้องเป็นรูทเพื่อเข้าถึงไฟล์ เมื่อรูทเป็นเจ้าของเว็บเซิร์ฟเวอร์ที่ถูกบุกรุกจะสามารถเข้าถึงระบบทั้งหมดของคุณได้ ด้วยการระบุ ID เฉพาะเว็บเซิร์ฟเวอร์ที่ถูกบุกรุกจะสามารถเข้าถึงไฟล์ได้อย่างเต็มที่เท่านั้น
หากคุณตัดสินใจที่จะรันภายใต้ ID ผู้ใช้อื่นผู้ใช้นั้นจะต้องเป็นเจ้าของไฟล์ที่มีประสิทธิภาพเพื่อรับสิทธิ์ที่เหมาะสม อาจทำให้เกิดความสับสนในการเป็นเจ้าของส่วนบุคคลของไฟล์ทั้งระบบไปยังบัญชีส่วนตัวของคุณ
การสร้างผู้ใช้ที่เฉพาะเจาะจงจะช่วยให้จดจำไฟล์ได้ง่ายขึ้นและสอดคล้องกับการรับรู้ ID ที่ไปchown
ยังไฟล์และโฟลเดอร์ใหม่ที่เพิ่มเข้ามาในเว็บไซต์
หมายเลขผู้ใช้หรือชื่อของเจ้าของไม่ได้เรื่อง สิ่งที่ถูกเลือกหรือตัดสินใจจะต้องถูกกำหนดค่าในไฟล์การกำหนดค่าเว็บเซิร์ฟเวอร์
โดยค่าเริ่มต้นการกำหนดค่าของเจ้าของอยู่www-data
ในการกำหนดค่า Ubuntu ของ Apache2 เนื่องจากนั่นคือการกำหนดค่าเริ่มต้นคุณจะรู้ได้อย่างสะดวกว่าต้องการความเป็นเจ้าของสำหรับไฟล์เว็บของคุณ หากคุณเปลี่ยนคุณจะต้องเปลี่ยนไฟล์ในเว็บไซต์ของคุณให้ตรงกัน
ฉันไม่ได้ทำงานNginxแต่เนื่องจากมันอยู่ในที่เก็บอูบุนตูฉันแน่ใจว่ามันได้รับการทดสอบกับwww-data
การกำหนดค่าเป็นค่าเริ่มต้น
www-data
มัน นั่นคือสาเหตุที่เป็นคำถามของคุณพวกเขาขอให้คุณสร้าง userID และ groupID ถ้าไม่มีอยู่ การติดตั้ง Apache2 จะสร้างผู้ใช้โดยอัตโนมัติ ผมไม่แน่ใจว่าเกี่ยวกับNqinx คุณสามารถตรวจสอบเพื่อดูว่ามันมีอยู่กับ: iid -u www-data&&id -g www-data
. หากมีอยู่มันจะแสดงหมายเลขประจำตัวของผู้ใช้และกลุ่ม โดยค่าเริ่มต้นบน Ubuntu 33
ผู้ใช้และกลุ่มตัวเลข
www-data
ในฐานะเจ้าของอาจมีความเสี่ยงด้านความปลอดภัยตามที่กล่าวไว้ในbase-passwd
เอกสารประกอบ (ดูคำตอบของ @ muru) เนื่องจากเจ้าของมักจะมีสิทธิ์เข้าถึงแบบอ่าน / เขียนสำหรับเนื้อหาบนเว็บ คุณสามารถลบสิทธิ์การเขียนแก่www-data
เจ้าของหรือใช้เจ้าของคนอื่น www-data
แน่นอนต้องมีการเข้าถึงการอ่านข้อมูลทั้งหมดที่จะให้บริการ แต่ถ้าคุณให้สิทธิ์ที่จำเป็นสำหรับแต่ละไฟล์และไดเรกทอรีเท่านั้นและไม่มากคุณจะปลอดภัยมากขึ้น
www-data
เป็นผู้ใช้ที่เว็บเซิร์ฟเวอร์ใน Ubuntu (Apache, nginx เป็นต้น) ใช้เป็นค่าเริ่มต้นสำหรับการทำงานปกติ กระบวนการเว็บเซิร์ฟเวอร์สามารถเข้าถึงไฟล์ใด ๆ ที่www-data
สามารถเข้าถึงได้ มันไม่มีความสำคัญอื่น ๆ
จากbase-passwd
เอกสาร ( /usr/share/doc/base-passwd/users-and-groups.txt.gz
):
เว็บเซิร์ฟเวอร์บางตัวทำงานเป็น www-data เนื้อหาเว็บไม่ควรเป็นของผู้ใช้รายนี้หรือเว็บเซิร์ฟเวอร์ที่ถูกบุกรุกจะสามารถเขียนเว็บไซต์ใหม่ได้ ข้อมูลที่เขียนโดยเว็บเซิร์ฟเวอร์จะเป็นของ www-data
base-passwd
เอกสารสำหรับเรื่องนั้น
www-data
คือผู้ใช้ (และกลุ่ม) ที่บริการ httpd (apache) กำลังทำหน้าที่กับระบบของคุณ