ผู้ใช้ควรใช้ NGinx และ PHP เป็นอะไร


15

สิทธิ์เป็นสิ่งที่ทำให้ฉันสับสนในขณะที่ใช้ Linux ดังนั้นนาทีทั้งอินสแตนซ์ NGinx และ PHP-FPM ของฉันกำลังทำงานกับผู้ใช้และกลุ่ม:

ข้อมูล www

เป็นมาตรฐานนี้หรือไม่ ฉันประสบปัญหาเมื่อเจอการอัปโหลดไฟล์

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

ฉันกำลังคิดที่จะเปลี่ยนอินสแตนซ์ nginx และ php ของฉันเพื่อรักษากลุ่มไว้ แต่เปลี่ยนให้ทำงานภายใต้ชื่อผู้ใช้ของฉัน

วิธีการจัดการสิทธิ์ที่ถูกต้องที่นี่เป็นอย่างไร ขอขอบคุณ.

คำตอบ:


12

นี่คือวิธีการทำงาน: เมื่อคุณเข้าสู่ระบบผ่าน FTP / SSH และอัปโหลดไฟล์พวกเขาจะถูกสร้างขึ้นด้วยสิทธิ์ของคุณ เว็บรูทของคุณน่าจะเป็นโลกที่เขียนได้ (0777) ซึ่งไม่ปลอดภัย - ผู้ใช้ทุกคนในระบบสามารถเขียนสิ่งที่นั่นได้ PHP ทำงานด้วยสิทธิ์ผู้ใช้ที่แตกต่างกัน (ระบุไว้ในการกำหนดค่า PHP-FPM ไม่ใช่การกำหนดค่า nginx) และเนื่องจากไดเรกทอรีสามารถเขียนได้ทั่วโลกผู้ใช้ PHP (www-data) ก็สามารถเขียนได้เช่นกัน แต่เจ้าของไฟล์นี้คือ www-data ไม่ใช่บัญชีของคุณ พวกเขาเป็น 2 บัญชีที่แตกต่างในระดับสิทธิ์ของระบบไฟล์

ฉันขอแนะนำให้คุณสร้างผู้ใช้เฉพาะที่มีสิทธิ์น้อยที่สุดซึ่งจะเป็นเจ้าของไดเรกทอรี webroot และจะใช้สำหรับการอัพโหลด FTP / SSH และจะเรียกใช้ php คุณควรเปลี่ยนการกำหนดค่า PHP-FPM ในส่วนของผู้ปฏิบัติงานมีรายการผู้ใช้และการกำหนดค่า NGINX ดังนั้นคุณสามารถทำให้ไฟล์เว็บไซต์ของคุณไม่สามารถอ่านได้ทั่วโลกและปลอดภัยยิ่งขึ้น

ไม่เรียกใช้ PHP ด้วยผู้ใช้สิทธิ์ (sudo capablities, เขียนสิทธิ์ผู้ใช้งาน docroot นอกสถานที่) ซึ่งอาจทำให้เซิร์ฟเวอร์ไม่ปลอดภัย


1
คำตอบที่ดีฉันสร้างผู้ใช้ใหม่โฟลเดอร์ใหม่คัดลอกทุกอย่างจบใช้สิทธิ์ที่ถูกต้องและนำผู้ใช้มาใช้ ทำงานได้ดี ขอขอบคุณ.
นักพัฒนา Pixel

ฉันสามารถเพิ่มผู้ใช้ FTP ของฉันไปยังwww-dataกลุ่มแทนที่จะสร้างผู้ใช้เฉพาะได้หรือไม่ มันแก้ปัญหา @ ThePixelDeveloper หรือไม่? ขอบคุณ
Vladyslav Turak

2

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

หากผู้ใช้มีการจัดการบริการเว็บคุณควรเพิ่มผู้ใช้ไปยังกลุ่มที่เกี่ยวข้อง (www-data) หรืออนุญาตให้ su (หรือ sudo) ไปยังผู้ใช้ที่เกี่ยวข้อง (ยัง www-data)


10
เหตุผลที่ www-data เป็นบัญชีที่มีสิทธิพิเศษเป็นศูนย์ - ไม่สามารถเขียนไปยังไฟล์ใด ๆ ในระบบไฟล์ทั้งหมดไม่อ่านเป็นไฟล์ใด ๆ ยกเว้นไฟล์ที่อ่านได้ทั่วโลก ก่อนหน้านี้คุณจะต้องใช้ผู้ใช้ "ไม่มีใคร" ในตัวเพื่อทำสิ่งนี้ อย่างไรก็ตามการสร้าง "www-data" คุณมีความเป็นไปได้ที่จะอนุญาตให้ผู้ใช้รายนี้เขียนไฟล์บางไฟล์โดยไม่ต้องทำให้ไฟล์เหล่านั้นสามารถเขียนได้ทั่วโลก (ซึ่งไม่ดี) หลักการพื้นฐานว่า "www-data" นั้นมีสิทธิพิเศษเหมือนกับ "ไม่มีใคร" ในทุก ๆ ด้านถือเป็นจริง
thomasrutter

@thomasrutter จากสิ่งที่ฉันเข้าใจฉันควรรัน Nginx และ PHP-FPM ภายใต้ผู้ใช้ www-data ที่อยู่ในกลุ่ม www-data หากฉันต้องการให้ผู้ใช้รายนี้สามารถread& writeไปยังบางโฟลเดอร์ได้ฉันต้องให้สิทธิ์ที่เหมาะสมแก่เขา ในกรณีส่วนใหญ่นี่จะเป็นโฟลเดอร์รูท/var/www/htmlและการ755อนุญาต ฉันถูกไหม? ขอบคุณ!
Vladyslav Turak

1

ฉันพยายามหลีกเลี่ยงการให้สคริปต์รัน nginx / php ที่เป็นเจ้าของเป็นข้อมูล www ด้วยเหตุผลด้านความปลอดภัย


9
คุณจะทำอย่างละเอียดเกี่ยวกับที่?
Karussell
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.