จะให้สิทธิ์การอ่านเพื่อเขียนไปยังโฟลเดอร์และโฟลเดอร์ย่อยและไฟล์ได้อย่างไร?


10

ฉันเปลี่ยนความเป็นเจ้าของไฟล์ localhost ของฉันบน/var/www/และโฟลเดอร์ย่อยและให้สิทธิ์ 777 อย่างไรก็ตามเมื่อใดก็ตามที่ฉันเพิ่มโฟลเดอร์ใหม่ในนั้นโฟลเดอร์ใหม่จะไม่ได้รับอนุญาตโดยอัตโนมัติ ฉันจะให้สิทธิ์โฟลเดอร์ 777 ตลอดไปเพื่อที่ว่าถ้าฉันเพิ่มโฟลเดอร์ใหม่หรือไฟล์ที่ได้รับอนุญาตเดียวกัน


4
โปรดอ่านเหตุผล
Marco Ceppi

777 เป็นความคิดที่ดี แต่การใช้ ACL สามารถทำได้ดีมาก คุณช่วยกรุณาอ่านวิธีแก้ปัญหานี้ใน ACLเพื่อดูว่ามันใช้งานได้ดีสำหรับคุณหรือไม่?

1
ที่เกี่ยวข้องเพื่อ chmod ไดเรกทอรีทั้งหมดที่คุณสามารถใช้find . -type d -exec chmod 777 {} +เพื่อเปลี่ยนไดเรกทอรีทั้งหมดเป็น 777 จำไว้ว่าคุณจะต้องเข้าสู่ระบบในฐานะที่เป็นรากเพื่อผลลัพธ์ที่ดีกว่าและให้แน่ใจว่าคุณอยู่ในโฟลเดอร์
Redy S

คำตอบ:


1

สิทธิ์สำหรับไฟล์ที่สร้างขึ้นใหม่ถูกตั้งค่าโดยumask


คุณสามารถเขียนคำสั่งสำหรับการสร้าง / var / www / สามารถเขียนได้และให้สิทธิ์เช่นที่ฉันได้รับอนุญาตเดียวกัน (777) สำหรับไซต์ที่ฉันเพิ่งเพิ่มเข้าไป
kamal

1
การอนุญาต 777 ให้กับเว็บเซิร์ฟเวอร์ของคุณไม่ดี
saji89

คุณช่วยเพิ่มรายละเอียดเพิ่มเติมได้ไหม
saji89

@ Vojtech Trefny ลิงก์ไม่ทำงานในขณะนี้ 404 ไม่พบกล่าว
all4naija

12

คุณสามารถใช้ตัวเลือกซ้ำได้ตลอดเวลา sudo chown -R username /var/www


คุณต้องการ upvotes มากขึ้น!
Sheharyar

10

ดังที่คนอื่น ๆได้กล่าวไปแล้วการให้สิทธิ์ 777 บน/var/wwwเป็นความคิดที่เลวจริงๆโดยเฉพาะอย่างยิ่งในการผลิต

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

  • สร้างกลุ่มใหม่

  • เพิ่มผู้ใช้ที่ต้องการแก้ไขข้อมูลใน/var/wwwกลุ่มนั้น

  • เปลี่ยนความเป็นเจ้าของของ/var/wwwกลุ่มนั้นซ้ำ ๆ

  • ชุดumaskบน/var/wwwเพื่อให้ไฟล์ที่สร้างขึ้นใหม่ทั้งหมดจะเป็นของกลุ่มที่เราได้สร้างขึ้น

ตัวเลือกอื่นคือใช้ ACL อีกครั้งเพื่อให้สิทธิ์การเขียนแก่ผู้ใช้ที่ต้องการเท่านั้น

นี่คือคำแนะนำโดยละเอียดเกี่ยวกับข้อผิดพลาดของเซิร์ฟเวอร์

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


2

คุณควรแก้ไข/etc/apache/envvarsเป็นรูทด้วยโปรแกรมแก้ไขที่คุณเลือก

ตัวอย่าง: ALT+F2
gksudo gedit /etc/apache2/envvars

umask XXXไปที่จุดสิ้นสุดของไฟล์และเพิ่มบรรทัด

โดยที่ umask เป็นเลขฐานสองของค่าสิทธิ์ที่ต้องการ
สำหรับ 774 นี่จะเป็น 003 สำหรับ 777 ความคิดที่ไม่ดีมันจะเป็น 000

บันทึก

รีสตาร์ท apache

ตัวอย่าง: sudo apache2ctl restart

สิ่งนี้จะมีผลกับไฟล์ / โฟลเดอร์ที่สร้างขึ้นใหม่โดยผู้ใช้ apache

หมายเหตุเพิ่มเติมการอ่านและเขียนคือ 6 ในช่องผู้ใช้กลุ่มหรือใครก็ได้


0

นอกจากนี้โซลูชัน "นอกกรอบ" บางอย่างก็คือกำหนดค่าเซิร์ฟเวอร์ http ของคุณให้ใช้โฟลเดอร์อื่น หากคุณใช้ Apache เพียงแก้ไขไฟล์กำหนดค่า วิธีนี้คุณไม่จำเป็นต้องเปลี่ยนการอนุญาตสำหรับ / var / www แม่มดอาจเป็นความคิดที่ไม่ดี (ปัญหาด้านความปลอดภัยที่อาจเกิดขึ้น)

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


0

ฉันคิดว่าคุณต้องการมีสิทธิ์เขียน/var/wwwเพื่อแก้ไขไฟล์และ dirs ฉันคิดว่าทางออกที่ดีที่สุดคือการติดตั้งapache2-mpm-itkและเพิ่มไฟล์ config ในโฮสต์เสมือน/etc/apache2/sites-available/default:

<IfModule mpm_itk_module>
    AssignUserId your-username your-group
</IfModule>

และเรียกใช้chown your-username\: /var/www -Rvวิธีนี้ apache สำหรับโฮสต์เสมือนนั้นจะทำงานด้วย UID / GID ของคุณและคุณจะสามารถแก้ไขไฟล์ได้ แม้แต่ไฟล์ที่สร้างโดย PHP จะมี UID / GID ของคุณด้วย

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