เจ้าของ / กลุ่ม / สิทธิ์ที่ถูกต้องสำหรับไฟล์ / โฟลเดอร์ไซต์ Apache 2 ภายใต้ Mac OS X หรือไม่


114

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

ขอบคุณ!

คำตอบ:


186

นี่เป็นวิธีที่เข้มงวดและปลอดภัยที่สุดที่ฉันพบตามที่อธิบายไว้ที่นี่สำหรับ~/my/web/root/ไดเร็กทอรีสมมุติสำหรับเนื้อหาเว็บของคุณ:

  • สำหรับแต่ละไดเรกทอรีหลักที่นำไปสู่รากเว็บของคุณ (เช่น~/my, ~/my/web, ~/my/web/root):
    • chmod go-rwx DIR (ไม่มีใครนอกจากเจ้าของสามารถเข้าถึงเนื้อหาได้)
    • chmod go+x DIR (เพื่อให้ "ผู้ใช้" รวมถึง _www "ป้อน" ผบ.)
  • sudo chgrp -R _www ~/my/web/root (ตอนนี้เนื้อหาเว็บทั้งหมดเป็นกลุ่ม _www)
  • chmod -R go-rwx ~/my/web/root (ไม่มีใครอื่นนอกจากเจ้าของสามารถเข้าถึงเนื้อหาเว็บได้)
  • chmod -R g+rx ~/my/web/root (ตอนนี้เนื้อหาเว็บทั้งหมดสามารถอ่านได้ / ปฏิบัติการ / บังคับโดย _www)

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


3
ฉันต้องให้สิทธิ์ในการอ่านนอกเหนือจากแฟล็ก x ด้วยchmod go+rx DIRที่ระดับไดเร็กทอรี / Users / username ก่อนที่ ls จะหยุดการส่งข้อผิดพลาดการอนุญาต สงสัยว่าทำไม?
bhavinb

1
@mike ไฟล์และไดเรกทอรีทั้งหมดจะยังคงเป็นของคุณ (ผู้ใช้) และยังสามารถเขียนได้ chgrp เพียงช่วยให้ "_www" กลุ่มการอ่านไฟล์
dkamins

2
สำหรับระบบที่คาดว่าสคริปต์ของเว็บไซต์จะสร้างโฟลเดอร์ของตนเองและเขียนไฟล์ของตัวเองภายใน webroot (เช่นเดียวกับ CMS จำนวนมาก) ฉันต้องให้สิทธิ์การเขียนแก่กลุ่ม _www chmod -R g+rwx ~/my/web/rootดังนั้นขั้นตอนสุดท้ายจะกลายเป็น คัดค้านใด ๆ หรือวิธีที่ดีกว่าในการทำ @dkamins นี้?
Jpsy

1
@Jpsy นั่นน่าจะใช้ได้ดีถ้าแอพของคุณต้องเขียนถึงตัวมันเอง มันแนะนำปัญหาด้านความปลอดภัยอื่น ๆ ที่อาจเกิดขึ้นหากโค้ดอื่นกำลังทำงานเป็น _www ด้วย (และอาจแก้ไขโค้ด CMS โดยเจตนาร้าย) ดังนั้นโปรดใช้ความระมัดระวัง หากคุณสามารถ จำกัด ไดเร็กทอรีย่อยที่เขียนได้ (g + w) ไว้ในไดเร็กทอรีย่อยที่ลึกกว่าก็ยังดีกว่า
dkamins

1
ตอนนี้อายุไม่กี่ปีแล้วเวลาเดินผ่านไปและ OS X ชอบเปลี่ยนวิธีการทำงานของเซิร์ฟเวอร์ Apache เริ่มต้นเป็นครั้งคราว ดังนั้นในขณะที่โซลูชันนี้ยังใช้งานได้ฉันขอแนะนำให้ใช้โซลูชันอื่นในการสร้าง VM ในเครื่องเพื่อทดสอบแอปของคุณแทนที่จะใช้ OS X เอง ดู: vagrantup.com
dkamins

30

หากคุณไม่ชอบ Terminal นี่คือวิธี GUI ในการทำ dkamins กำลังบอกคุณ:

1) ไปที่โฮมไดเร็กทอรีผู้ใช้ของคุณ ( ลูโดจะเป็นของฉัน) และจากเมนูไฟล์ให้เลือกรับข้อมูล cmdIในตัวตรวจสอบ:

รับหน้าต่างข้อมูลส่วนการแบ่งปันและการอนุญาต

2) เมื่อalt/optionคลิกที่เครื่องหมาย[+]เพิ่มกลุ่ม_wwwและตั้งค่าการอนุญาตให้อ่านอย่างเดียว :

รับข้อมูลเพิ่มผู้ใช้และกลุ่มที่เน้นและเวิลด์ไวด์เว็บเซิร์ฟเวอร์ที่เน้น

  • ดังนั้นโปรดพิจารณา (แนวปฏิบัติที่ดี) ไม่เก็บข้อมูลส่วนตัวไว้ที่รากของโฟลเดอร์โฮมผู้ใช้ของคุณ (& ฮาร์ดดิสก์)!
  • คุณสามารถข้ามขั้นตอนนี้ได้หากกลุ่ม ** ทุกคน ** มีสิทธิ์ ** อ่านอย่างเดียว ** แต่เนื่องจาก AirDrop โฟลเดอร์ ** / Public / Drop Box ** ส่วนใหญ่ไม่มีประโยชน์ ...

3) แสดงตัวตรวจสอบรับข้อมูลของโฟลเดอร์ไซต์ผู้ใช้ของคุณและทำซ้ำขั้นตอนที่ 2 จากนั้นจากเมนูย่อยรูปเฟืองให้เลือกนำไปใช้กับรายการที่แนบมา ... :

เมนูย่อยรับข้อมูลการดำเนินการใช้กับรายการที่ปิด ... เน้น

Voilà 3 ขั้นตอนและ GUI วิธีเดียว ...


2
ไม่ได้ช่วยฉันตรงนี้ แต่มีความรู้เกี่ยวกับALT + [+]เคล็ดลับดี ขอบคุณ
ทอม

1
นี่เป็นวิธีที่ดีที่สุด alt + click แสดงผู้ใช้ _www ที่ถูกต้อง
CoolArts

กรณีนี้จะเกิดขึ้นจริงหากคุณเปิดใช้งานการแชร์ไฟล์ของผู้เยี่ยมชมหรือติดตั้งสคริปต์ php ที่เป็นอันตราย ... ตรวจสอบให้แน่ใจว่ามีเพียงโฟลเดอร์สาธารณะและไซต์ที่ทุกคน "อ่านได้" ขั้นตอนที่ 3 ใช้กับโฟลเดอร์ "Sites" เท่านั้น…ดังนั้นโดยปกติแล้วโฟลเดอร์อื่น ๆ จึงไม่ควรเปลี่ยนแปลง…
llange

สิ่งนี้ไม่จำเป็นต้องใช้ _www อยู่ในกลุ่มทุกคน
DarkNeuron

สิ่งที่ควรรู้เกี่ยวกับ alt [+] นี้ !! Thx
Remi Grumeau

12

ฉันรู้ว่านี่เป็นโพสต์เก่า แต่สำหรับใครก็ตามที่อัปเกรดเป็น Mountain Lion (10.8) และประสบปัญหาในลักษณะเดียวกันการเพิ่มFollowSymLinksไฟล์ {username} .conf (ใน / etc / apache2 / users /) ของคุณก็เป็นเคล็ดลับสำหรับฉัน ดังนั้นไฟล์จึงมีลักษณะดังนี้:

<Directory "/Users/username/Sites/">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

ฉันสร้างผู้ใช้ "git" ซึ่งฉันไม่ได้ใช้และนั่นคือทั้งหมดที่มีอยู่ในไดเร็กทอรีนั้นเพื่อแก้ไข (git.conf) เมื่อฉันอัปเดตไฟล์ตามที่อธิบายไว้ข้างต้นสำหรับคอมไพล์ผู้ใช้ - ไดเร็กทอรีที่ฉันตั้งค่าได้รับการบริการอย่างถูกต้องโดย apache สิ่งนี้ไม่สมเหตุสมผลสำหรับฉันเพราะคอมไพล์ผู้ใช้ของฉันไม่มีส่วนเกี่ยวข้องกับไดเร็กทอรีที่สร้างขึ้นหรือ apache
ktamlyn

9

กระทู้เก่า 2 เดือน แต่ดีกว่าไม่สาย! ในวันที่ 10.6 ฉันตั้งค่าโฟลเดอร์เอกสารเว็บเซิร์ฟเวอร์เป็น:

owner:root
group:_www
permission:755

_www คือผู้ใช้ที่เรียกใช้ apache ภายใต้ Mac OS X จากนั้นฉันได้เพิ่ม ACL เพื่ออนุญาตการอนุญาตแบบเต็มให้กับกลุ่มผู้ดูแลระบบ ด้วยวิธีนี้ฉันยังสามารถทำการเปลี่ยนแปลงใด ๆ กับผู้ดูแลระบบของฉันได้โดยไม่ต้องพิสูจน์ตัวตนในฐานะรูท นอกจากนี้เมื่อฉันต้องการอนุญาตให้เว็บเซิร์ฟเวอร์เขียนไปยังโฟลเดอร์ฉันสามารถ chmod เป็น 775 ได้โดยปล่อยให้ทุกคนยกเว้นรูท: _www มีสิทธิ์อ่าน / ดำเนินการเท่านั้น (ไม่รวม ACL ใด ๆ ที่ฉันใช้)


คุณไม่จำเป็นต้องตั้งค่าเจ้าของเป็น "รูท" แต่ก็ไม่เป็นอันตราย คุณไม่จำเป็นต้องใช้ o + rx perms ที่คุณมีอย่างแน่นอนซึ่งช่วยให้ผู้ใช้ในพื้นที่สามารถเรียกดูและอ่านเนื้อหาเว็บทั้งหมดของคุณได้ (รวมถึงอาจกำหนดค่าด้วยรหัสผ่าน DB เป็นต้น)
dkamins

1
(ดูคำตอบของฉันสำหรับคำถามนี้ด้านล่างซึ่งเป็นคำตอบที่ซับซ้อนกว่านี้ซึ่งอาจเป็นที่น่าสนใจสำหรับผู้ที่หวาดระแวงเรื่องความปลอดภัย)
dkamins

ในเทอร์มินัลเราจะดูได้อย่างไรว่ามีการติดตั้ง wordpress ด้วยอะไรบ้าง (เกี่ยวกับสิทธิ์ไฟล์ของตัวเอง) เนื่องจากฉันต้องการให้ wordpress สามารถเขียนการอัปโหลดสื่อของตัวเองได้ ...
ลงจอด

5

ในระบบ 10.6 ของฉัน:

vhosts folder:
 owner:root
 group:wheel
 permissions:755

vhost.conf files:
 owner:root
 group:wheel
 permissions:644

1
เยี่ยมมากขอบคุณสตีฟและสำหรับไฟล์เว็บเอง? / Library / WebServer / Documents / Library / WebServer / Documents / [file] / Library / WebServer / Documents / [directory]
Fo.

0

เจ้าของผู้ใช้สำหรับฉันคือผู้ใช้ผู้ดูแลระบบและกลุ่มคือ _www และทำงานโดยตั้งค่าสิทธิ์เป็น 775 สำหรับ dir และสำหรับไฟล์ 664


0

Catalina Update / สิทธิ์เดสก์ท็อป

ฉันเจอสิ่งนี้ปีละครั้งใน macOS ฉันมักจะใช้ apache2 เพื่อโฮสต์โฟลเดอร์บนเดสก์ท็อป

หากคุณพยายามให้สิทธิ์เข้าถึงdesktopโฟลเดอร์คุณต้องทำตามขั้นตอนนี้เพื่อให้ httpd สามารถเข้าถึงโฟลเดอร์ทั้งหมดได้: https://apple.stackexchange.com/a/373139/353465


-3

เปิดเทอร์มินัลก่อนจากนั้นไปที่ไดเร็กทอรีของเว็บเซิร์ฟเวอร์

cd /Library/WebServer/Documents

จากนั้นพิมพ์สิ่งนี้และสิ่งที่คุณจะทำคือคุณจะให้readและwriteอนุญาต

sudo chmod -R o+w /Library/WebServer/Documents

สิ่งนี้จะได้ผลอย่างแน่นอน!

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