ผู้ดูแลระบบเซิร์ฟเวอร์ของฉันต้องการให้ฉันตั้งค่าการอนุญาตพับลิกเขียนบนไดเร็กทอรี


9

ฉันค่อนข้างใหม่ต่อการพัฒนาเว็บไซต์ดังนั้นโปรดอดใจรอ

ฉันเป็นนักพัฒนา iPhone เป็นหลัก แต่เมื่อเร็ว ๆ นี้ฉันเพิ่งทำเว็บไซต์ให้คนอื่นโดยใช้โฮสติ้งที่ใช้ร่วมกัน ฉันสามารถเขียนไปยังไฟล์ใน PHP บนเว็บไซต์นั้นได้ดีโดยไม่ต้องคิดถึงสิทธิ์

ฉันอยู่ในขั้นตอนการปรับใช้บริการเว็บสำหรับแอพใหม่ที่ฉันทำ แต่มันไม่ได้ราบรื่น ความแตกต่างที่สำคัญที่สุดที่นี่คือฉันใช้เซิร์ฟเวอร์ของคนอื่นและมีการเข้าถึง FTP / DB

โดยพื้นฐานแล้วฉันมีไฟล์ PHP จำนวนหนึ่งซึ่งเป็นค่า CMS ของฉัน:

mysite.com/admin/manage_news.php
mysite.com/admin/manage_events.php

สคริปต์เหล่านั้นจะแก้ไขฐานข้อมูลหรือไฟล์ พวกเขาสามารถโต้ตอบกับ DB fine ได้ แต่สคริปต์ของฉันไม่สามารถเขียนไปยังระบบไฟล์ได้ ตัวอย่างเช่นพวกเขาอาจพยายามเขียนลงในไฟล์ต่อไปนี้:

mysite.com/data/img/event_1.png
mysite.com/data/somefile.txt

สิ่งนี้ใช้ได้ผลดีกับการติดตั้ง MAMP ของฉัน (ในเครื่อง) แต่เมื่อนำไปใช้กับเซิร์ฟเวอร์ PHP ก็เกิดข้อผิดพลาดทุกครั้งที่มีการพยายามเขียน ... สิ่งเช่นนี้:

ไม่สามารถเปิดไฟล์ "../data/img/someimage.png" เพื่อการเขียน

ดังนั้นฉันจึงส่งอีเมลถึงผู้ชายที่ใช้เซิร์ฟเวอร์และเขากลับมาพูดว่า:

ใช้ได้กับการอนุญาตสาธารณะหรือไม่ (777)

และมันทำ - แต่ฉันก็ระมัดระวังด้วยการใช้สิทธิ์สาธารณะดังนั้นจึงปิดการใช้งานได้ทันทีอีกครั้ง ฉันส่งอีเมลเขาว่า "ฉันจะทำให้สคริปต์ PHP ของฉันเขียนโดยใช้สิทธิ์ผู้ใช้มาตรฐาน" ได้อย่างไรและเขากล่าวว่า:

ปล่อยให้เป็นสาธารณะมันจะไม่เป็นไร

ฉันคิดว่ามันเป็นความขัดแย้งของ ip ที่ไหนสักแห่งในการแก้ปัญหาโดเมน แต่ฉันไม่ได้กังวลเกี่ยวกับมัน

จากนั้นฉันก็ส่งอีเมลเขาว่า "แน่นอนว่านี่ไม่ปลอดภัย" หรือบางสิ่งบางอย่างตามสายเหล่านั้นและเขาตอบด้วยข้อความต่อไปนี้:

ความจริงก็คือมีเว็บไซต์นับล้านรวมถึงเว็บไซต์ที่ฉันจัดการที่มี 777 ในโฟลเดอร์ต่าง ๆ มันเป็นวิถีชีวิต

ใครช่วยแก้ปัญหาให้ฉันได้บ้าง หรือฉันควรทำอย่างไรเพื่อหลีกเลี่ยงการใช้งาน 777 ฉันไม่ชอบความคิดของโฟลเดอร์ใด ๆ ในไซต์ / บริการของฉันที่เขียนได้แบบสาธารณะ

ฉันขอขอบคุณคำแนะนำของคุณเป็นอย่างมากเพราะฉันรู้เรื่องเว็บเซิร์ฟเวอร์น้อยมาก


12
หนีออกจากผู้ชายคนนี้และอย่ามองย้อนกลับไป
user9517

ไม่ได้จริงๆตัวเลือก ... ดูความคิดเห็นในคำตอบของ SvenW ...
อเล็กซ์ Coplan

คำตอบ:


13

มาทำลายมันกันเถอะ :

คุณต้องการให้ผู้ใช้เรียกใช้สคริปต์เพื่ออ่านดำเนินการและเขียนในไดเรกทอรีดังนั้นจึงควรเป็น:

7 = (r) ead, (w) พิธีกรรม, e (x) ecute

ผู้ใช้รายอื่นที่อยู่ในกลุ่มเดียวกันควรสามารถเรียกใช้งานไฟล์ php ภายในไดเรกทอรี แต่ไม่ควรเขียนลงไป (ด้วยเหตุผลที่ชัดเจน) พวกเขาไม่จำเป็นต้องอ่านไฟล์ PHP ดังนั้นเราจำเป็นต้องให้สิทธิ์การใช้งานเท่านั้น:

1 = e (x) ecute

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

1 = e (x) ecute

ดังนั้นขั้นต่ำเปล่าควรเป็น:

711

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

771

และนั่นอาจเป็นไปได้ ไม่ว่าจะเป็นหรือมี sysadmin เปลี่ยนผู้ใช้และกลุ่มความเป็นเจ้าของของไฟล์เหล่านั้นเป็นผู้ใช้เว็บเซิร์ฟเวอร์เริ่มต้น (แต่ไม่ใช่สิทธิ์!) หากยังไม่ได้ผลตัวอย่างของการอนุญาต (เช่น "ls -la ภายในไดเรกทอรี") จะช่วยเราแก้ไขปัญหานี้ต่อไปกล่าวว่าตราบใดที่คุณต้องให้สิทธิ์ดำเนินการแก่สาธารณะ ( หรือ "อื่น ๆ ") คุณควรถูกปรับจากจุดรักษาความปลอดภัย


2
หวังว่าฉันจะสามารถโหวตได้สองครั้ง
Wesley

ปัญหาคือว่าเว็บไซต์ไม่ควรเขียนไฟล์ภายในโครงสร้างของตัวเองมากกว่าการอนุญาตด้วยตนเอง
JamesRyan

คุณถูก. คุณอาจต้องการเขียนไปยังไฟล์ภายนอก webroot สาธารณะทั้งนี้ขึ้นอยู่กับข้อมูล
Rilindo

ที่นี่ฉันกำลังเขียนไปยัง/dataโฟลเดอร์ - โฟลเดอร์นี้มีสคริปต์ PHP ซึ่งประกอบขึ้นเป็นบริการเว็บ JSON ของฉันและรูปภาพจำนวนมากที่ใช้สำหรับเนื้อหาที่ถูกส่งผ่านลงในบริการเว็บ (ใน/data/imgโฟลเดอร์)
Alex Coplan

ดังนั้นภาพต้องเป็นสาธารณะแล้ว สิ่งที่ชี้แจง
Rilindo

18
Leave it as public, it'll be fine

I reckon it's an ip conflict somewhere in the domain resolution, 
but I'm not worried about it.

ผู้ชายคนนี้เป็นคนงี่เง่าและนี่ไร้สาระสมบูรณ์ สิทธิ์การเข้าถึงไม่มีส่วนเกี่ยวข้องกับที่อยู่ IP หรือการแก้ปัญหาโดเมนเขาเพียงแค่หยดคำ

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

สิทธิการเข้าถึงที่จำเป็นจริงๆนั้นขึ้นอยู่กับวิธีการใช้งานและกำหนดค่าของระบบและเป็นการยากที่จะบอกคุณบางอย่างโดยไม่รู้ตัว


ขอบคุณ - ความคิดของฉันเกี่ยวกับสิทธิ์ - ฉันไม่มีตัวเลือกในการโฮสต์ที่อื่นเนื่องจาก บริษัท ที่ฉันกำลังพัฒนาไม่ยอมจ่ายเงินและแนะนำฉันกับผู้ชายคนนี้และบอกว่าพวกเขาจะพาเขาไป ทำฟรี - จากสิ่งที่ฉันสามารถบอกได้ว่าฉันเพิ่งจะปิดเซิร์ฟเวอร์เสมือนของเขา ดังนั้นมันทำงานอย่างไรปกติสคริปต์ PHP สามารถทำงานในฐานะ "ผู้ใช้" และสามารถเขียนอะไรบนเว็บไซต์ได้อย่างไร
Alex Coplan

ฉันจะบอกพวกเขาเกี่ยวกับสิ่งที่พวกเขาได้รับ "ฟรี" ฉันมีประสบการณ์ไม่มากนักกับโฮสติ้งที่ใช้ร่วมกันดังนั้นฉันจึงไม่สามารถแสดงความคิดเห็นได้ ไซต์ของฉันใช้งานเว็บเซิร์ฟเวอร์และโฟลเดอร์ Debian ทั้งหมดที่ต้องเขียนซ้ำได้จะwww-dataมี700สิทธิ์ แต่สิ่งนี้อาจไม่สามารถใช้งานได้ในกรณีของคุณ
สเวน

ฉันคิดว่าพวกเขากำลังจ่ายเงินให้เขาสำหรับเว็บไซต์หลักของพวกเขาด้วยเหตุนี้ - ถ้ามันช่วยได้ที่ด้านล่างของหน้าแสดงข้อผิดพลาดของเซิร์ฟเวอร์ใด ๆ ก็จะบอกว่านี่Apache/2.2.9 (Debian) PHP/5.2.6-1
Alex Coplan

และนี่คือ vps ที่ไม่แชร์
Alex Coplan

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