ผู้ใช้ www-data คืออะไร?


35

ผมทำงานผ่านวิธีการบริการการใช้งาน Django กับ uWSGI และ Nginx บน Ubuntu 16.04 ในตอนท้ายของ "สร้างไฟล์หน่วย systemd สำหรับ uWSGI" ในบทความที่พวกเขาพูดคุยเกี่ยวกับwww-dataผู้ใช้ นี่คืออะไรและทำไมจึงสำคัญ

คำตอบ:


36

เพื่อความปลอดภัย

ไฟล์ไม่สามารถเขียนได้ทั่วโลก พวกเขาถูก จำกัด ให้เป็นเจ้าของไฟล์สำหรับการเขียน

เว็บเซิร์ฟเวอร์จะต้องทำงานภายใต้ผู้ใช้เฉพาะ ผู้ใช้นั้นจะต้องมีอยู่จริง

หากถูกเรียกใช้ภายใต้รูทไฟล์ทั้งหมดจะต้องสามารถเข้าถึงได้โดยรูทและผู้ใช้จะต้องเป็นรูทเพื่อเข้าถึงไฟล์ เมื่อรูทเป็นเจ้าของเว็บเซิร์ฟเวอร์ที่ถูกบุกรุกจะสามารถเข้าถึงระบบทั้งหมดของคุณได้ ด้วยการระบุ ID เฉพาะเว็บเซิร์ฟเวอร์ที่ถูกบุกรุกจะสามารถเข้าถึงไฟล์ได้อย่างเต็มที่เท่านั้น

หากคุณตัดสินใจที่จะรันภายใต้ ID ผู้ใช้อื่นผู้ใช้นั้นจะต้องเป็นเจ้าของไฟล์ที่มีประสิทธิภาพเพื่อรับสิทธิ์ที่เหมาะสม อาจทำให้เกิดความสับสนในการเป็นเจ้าของส่วนบุคคลของไฟล์ทั้งระบบไปยังบัญชีส่วนตัวของคุณ

การสร้างผู้ใช้ที่เฉพาะเจาะจงจะช่วยให้จดจำไฟล์ได้ง่ายขึ้นและสอดคล้องกับการรับรู้ ID ที่ไปchownยังไฟล์และโฟลเดอร์ใหม่ที่เพิ่มเข้ามาในเว็บไซต์

หมายเลขผู้ใช้หรือชื่อของเจ้าของไม่ได้เรื่อง สิ่งที่ถูกเลือกหรือตัดสินใจจะต้องถูกกำหนดค่าในไฟล์การกำหนดค่าเว็บเซิร์ฟเวอร์

โดยค่าเริ่มต้นการกำหนดค่าของเจ้าของอยู่www-dataในการกำหนดค่า Ubuntu ของ Apache2 เนื่องจากนั่นคือการกำหนดค่าเริ่มต้นคุณจะรู้ได้อย่างสะดวกว่าต้องการความเป็นเจ้าของสำหรับไฟล์เว็บของคุณ หากคุณเปลี่ยนคุณจะต้องเปลี่ยนไฟล์ในเว็บไซต์ของคุณให้ตรงกัน

ฉันไม่ได้ทำงานNginxแต่เนื่องจากมันอยู่ในที่เก็บอูบุนตูฉันแน่ใจว่ามันได้รับการทดสอบกับwww-dataการกำหนดค่าเป็นค่าเริ่มต้น


2
ขอบคุณมากที่พยายามอธิบายภาพรวมของโลกด้วย
user61629

1
btw 'id เฉพาะ' คืออะไร
user61629

1
www-dataมัน นั่นคือสาเหตุที่เป็นคำถามของคุณพวกเขาขอให้คุณสร้าง userID และ groupID ถ้าไม่มีอยู่ การติดตั้ง Apache2 จะสร้างผู้ใช้โดยอัตโนมัติ ผมไม่แน่ใจว่าเกี่ยวกับNqinx คุณสามารถตรวจสอบเพื่อดูว่ามันมีอยู่กับ: iid -u www-data&&id -g www-data. หากมีอยู่มันจะแสดงหมายเลขประจำตัวของผู้ใช้และกลุ่ม โดยค่าเริ่มต้นบน Ubuntu 33ผู้ใช้และกลุ่มตัวเลข
LD James

การใส่www-dataในฐานะเจ้าของอาจมีความเสี่ยงด้านความปลอดภัยตามที่กล่าวไว้ในbase-passwdเอกสารประกอบ (ดูคำตอบของ @ muru) เนื่องจากเจ้าของมักจะมีสิทธิ์เข้าถึงแบบอ่าน / เขียนสำหรับเนื้อหาบนเว็บ คุณสามารถลบสิทธิ์การเขียนแก่www-dataเจ้าของหรือใช้เจ้าของคนอื่น www-dataแน่นอนต้องมีการเข้าถึงการอ่านข้อมูลทั้งหมดที่จะให้บริการ แต่ถ้าคุณให้สิทธิ์ที่จำเป็นสำหรับแต่ละไฟล์และไดเรกทอรีเท่านั้นและไม่มากคุณจะปลอดภัยมากขึ้น
Yuval

18

www-dataเป็นผู้ใช้ที่เว็บเซิร์ฟเวอร์ใน Ubuntu (Apache, nginx เป็นต้น) ใช้เป็นค่าเริ่มต้นสำหรับการทำงานปกติ กระบวนการเว็บเซิร์ฟเวอร์สามารถเข้าถึงไฟล์ใด ๆ ที่www-dataสามารถเข้าถึงได้ มันไม่มีความสำคัญอื่น ๆ

จากbase-passwdเอกสาร ( /usr/share/doc/base-passwd/users-and-groups.txt.gz):

เว็บเซิร์ฟเวอร์บางตัวทำงานเป็น www-data เนื้อหาเว็บไม่ควรเป็นของผู้ใช้รายนี้หรือเว็บเซิร์ฟเวอร์ที่ถูกบุกรุกจะสามารถเขียนเว็บไซต์ใหม่ได้ ข้อมูลที่เขียนโดยเว็บเซิร์ฟเวอร์จะเป็นของ www-data


3
ยกเว้นการอภิปรายเกี่ยวกับสาเหตุที่คุณไม่ควรให้ www-data เข้าถึงไฟล์ webroot;)
kitingChris

1
เพียงเพื่อทำให้เป็นรูปธรรมมากขึ้นสำหรับฉันฉันสามารถถามว่าบริการเว็บเซิร์ฟเวอร์ต้องเข้าถึงเมื่อให้บริการหน้าเว็บใด
user61629

2
@ บริการ user61629? เว็บเซิร์ฟเวอร์เป็นบริการตัวเองตามนิยามของบริการตามปกติ
muru

1
@ kitingChris ใช่ฉันแค่ขุดbase-passwdเอกสารสำหรับเรื่องนั้น
muru

1
www-dataคือผู้ใช้ (และกลุ่ม) ที่บริการ httpd (apache) กำลังทำหน้าที่กับระบบของคุณ
kitingChris
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.