เราจะรู้ได้อย่างไรว่าไดเรกทอรีนั้นสามารถเขียนได้ apache?


21

ฉันได้รับแจ้งว่าฉันควรสร้างโฟลเดอร์รูปภาพและโฟลเดอร์ทรัพย์สินและฉันต้องตรวจสอบให้แน่ใจว่า: "เป็นไฟล์ apache ที่เขียนได้" ฉันได้รับคำสั่งให้ทำไดเรกทอรีแอป / รันไทม์ผ่านเว็บได้ เป็นเช่นเดียวกับ apache เขียนได้? ถ้าเป็นเช่นนั้น:

ฉันจะทำสิ่งนั้นในทันทีหรือรู้ได้อย่างไร

ทำls -lฉันได้รับสิ่งที่ชอบ:

drwxr-xr-x 13 user user 4096 2011-08-26 10:23 app
drwxr-xr-x 4 user user 4096 2011-08-26 10:23 runtime
drwxr-xr-x 2 user user 4096 2011-08-26 11:11 images
drwxr-xr-x 2 user user 4096 2011-08-26 11:12 assets

คำตอบ:


24

Apache เป็นโปรแกรมที่ทำงานในพื้นหลัง Apache เริ่มต้นโดยผู้ใช้root(เรียกอีกอย่างว่าroot-process) สิ่งนี้จะroot-processเปิดใช้กระบวนการลูกหลายกระบวนการที่จัดการกับคำขอของลูกค้า เพื่อเหตุผลด้านความปลอดภัยกระบวนการลูกไม่ได้ถูกเรียกใช้โดยผู้ใช้rootแต่ในฐานะผู้ใช้ที่มีสิทธิ์น้อยที่สุด โดยปกติผู้ใช้นี้เป็นชื่อหรือapachewww-data

หากต้องการทราบว่าผู้ใช้รายนี้ใช้สำหรับ apache v1:

ps -ef | grep httpd | grep -v grep

หรือสำหรับ apache v2:

ps -ef | grep apache | grep -v grep

ผลลัพธ์สำหรับ apache 2 จะเป็นดังนี้:

root 5001 1 0 07:21? 00:00:00 / usr / sbin / apache2 -k start
www-data 5021 5001 0 07:21? 00:00:00 / usr / sbin / apache2 -k start
www-data 5022 5001 0 07:21? 00:00:00 / usr / sbin / apache2 -k start
www-data 5023 5001 0 07:21? 00:00:00 / usr / sbin / apache2 -k start

ในกรณีนี้ผู้ใช้ / กลุ่มคือ www-data

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

chgrp www-data /path/to/mydir
chmod g+w /path/to/mydir

( www-dataเป็นชื่อที่คุณพบด้วยpsคำสั่งด้านบน)

เกี่ยวกับ:

2) ฉันได้รับคำสั่งให้สร้างแอป / รันไทม์ไดเรกทอรีบนเว็บเขียนได้ เป็นเช่นเดียวกับ apache เขียนได้?

ใช่นี่คือไดเรกทอรีที่คุณต้องตั้งค่าที่สามารถเขียนได้สำหรับกลุ่ม Apache ที่คาดหวัง อาจจะเป็นที่ใดที่หนึ่ง/var/www/หรือตั้งเป็นโฮสต์เสมือนใน/etc/apache2/sites-enabled/และ / หรือ/etc/apache2/sites-available


ขอบคุณมาก. มีวิธีการสร้างไดเรกทอรีด้วย mkdir และในเวลาเดียวกันให้สิทธิ์เหล่านั้นหรือไม่
MEM

เป็นความจริงไหมที่เราสามารถทำได้: chmod -R o + w / หรือ / path / here? (-R เป็นตัวเลือกที่ชัดเจน) ?
MEM

ใช่ 1 วิธีคือ:mkdir dirname && chgrp www-data dirname
Rinzwind

@MEM ใช่ Rจะทำ dirs ทั้งหมดจากที่คุณออกคำสั่ง มีหลายวิธีในการทำเช่นนี้;)
Rinzwind

2
ps -ef | grep [a]pacheเป็นสำนวนสามัญเพื่อหลีกเลี่ยงgrepสายปลอมในการส่งออก
enzotib
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.