จะอนุญาตให้ apache เข้าถึงไฟล์ แต่ป้องกันไม่ให้ผู้อื่นดูไฟล์ได้อย่างไร?


2

ฉันมีหลายโฟลเดอร์พร้อมการติดตั้ง Magento

เช่น

www / magento1 www / magento2

ไฟล์ / โฟลเดอร์ทั้งหมดในนั้นเป็นของ root: magento1 และ root: magento2 ตามลำดับ

ฉันมี 3755 perms สำหรับโฟลเดอร์ทั้งหมด, 644 สำหรับไดเรกทอรีทั้งหมดเริ่มต้นด้วย ที่ป้องกันไม่ให้ใครนอกจากรูทจากการเขียนไปยังโฟลเดอร์หรือไฟล์ใด ๆ

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

ไม่เป็นไร สิ่งเดียวที่ไม่ดีคือฉันไม่ต้องการให้พวกเขาสามารถอ่านชื่อผู้ใช้ / รหัสผ่านฐานข้อมูล mysql จาก magento1 / app / etc / local.xml ฉันไม่ต้องการให้พวกเขาเข้าถึงฐานข้อมูลที่จัดเก็บข้อมูลที่ละเอียดอ่อน ฉันยังไม่ต้องการโปรแกรมเมอร์โกงที่จะลบตารางหรือสิ่งที่มีคุณ

แต่ apache ต้องมีสิทธิ์อ่านเพื่อเข้าถึงไฟล์เดียวกัน

ต่อไปนี้เป็น "โซลูชัน" ที่ใช้งานไม่ได้: นำการอนุญาตการอ่านออกจากกลุ่ม แต่ให้สิทธิ์ไว้สำหรับผู้อื่น ทำไม? เพราะนั่นช่วยป้องกัน devs ไม่ให้อ่านจากแอพ / etc / local.xml แต่อนุญาตให้พวกเขาอ่านส่วนอื่น ๆ ทั้งหมดได้

ฉันจะทำอย่างไร


แก้ไข: ใช่ devs = นักพัฒนาและพวกเขาจะมีการเข้าถึง SSH และ FTP


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

คำตอบ:


3

สมมติว่าภายใต้ Debian, apache จะทำงานเป็นผู้ใช้ www-data และ group www-data, การแก้ปัญหาคือ

chown www-data:www-data www/magento1/app/etc/local.xml
chmod 440 www/magento1/app/etc/local.xml

ผู้ใช้รูทสามารถอ่านและเขียนไฟล์ทั้งหมดได้เสมอ


นั่นเป็นวิธีแก้ปัญหาที่ฉันใช้
Buttle Butkus

เกี่ยวกับกรณีที่ผู้ใช้สองคนต้องการโฮสต์สิ่งของและคุณไม่ต้องการให้พวกเขาเห็นรหัสผ่านซึ่งกันและกัน
jozxyqk

@jozxyqk สำหรับกรณีที่ "ผู้ใช้สองคนจำเป็นต้องโฮสต์สิ่งต่าง ๆ และคุณไม่ต้องการให้พวกเขาเห็นสิ่งของของกันและกันฉันได้คิดวิธีที่ซับซ้อนขึ้นมา ฉันให้เจ้าของไฟล์ / เจ้าของกลุ่มผู้ใช้ทั้งหมดเป็นusernameและไม่ให้สิทธิ์ใด ๆ แก่ "ผู้อื่น" และอ่าน / ดำเนินการกับกลุ่มเท่านั้น เช่น 750 สำหรับโฟลเดอร์ 640 สำหรับไฟล์ ที่ป้องกันไม่ให้ผู้ใช้เห็นไฟล์ของกันและกัน จากนั้นฉันเพิ่มผู้ใช้ apache ( www-dataหรือapacheหรืออะไรก็ตาม) ในกลุ่มผู้ใช้แต่ละคนเพื่อให้ apache สามารถเข้าถึงการอ่านได้เท่านั้น คุณสามารถให้สิทธิ์การเขียนกลุ่มที่ apache ต้องการ (เช่นในvarโฟลเดอร์ของ Magento )
Buttle Butkus

@ButtleButkus aah ที่เหมาะสม แม้ว่า apache จะเรียกใช้สคริปต์ของผู้ใช้ แต่สคริปต์นั้นจะสามารถดูไฟล์ของผู้อื่นได้ มีวิธีใดในการป้องกันสิ่งนี้หรือไม่? ฉันถามสิ่งนี้ที่นี่และชี้ไปที่ "บล็อกไดเรกทอรี" แต่ไม่สามารถหาวิธีใช้เพื่อป้องกันการเข้าถึงระหว่างผู้ใช้ สิ่งนี้ยังเปลี่ยนการรักษาความปลอดภัยเป็น apache และอยู่ห่างจากระบบปฏิบัติการ
jozxyqk

1
@ButtleButkus ขอบคุณ! ฟังดูเหมือนเป็นวิธีแก้ปัญหาที่เหมาะสม ใช่ฉันเจอเซิร์ฟเวอร์ที่ฉันสามารถเขียนสคริปต์ php ที่เรียกใช้ในฐานะผู้ใช้ apache และสามารถเข้าถึงได้ นี่ทำให้ฉันสนใจว่าควรจะตั้งค่าอย่างไร ฉันเพิ่งพบsuEXECเช่นกัน
jozxyqk

0

สมมติว่า devs = นักพัฒนา ...

มีอะไรที่ไม่ได้อธิบายในวิธีที่ devs เข้าถึงระบบ - ssh? ftp?

ถ้าเป็นการเข้าถึงแบบ ftp เท่านั้นคุณสามารถแยกไฟล์ config ออกจากการแสดง / แสดงผ่าน ftp

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


ia apache กำลังทำงานเป็น "root" (ซึ่งถือว่าเป็นวิธีปฏิบัติที่ไม่ดีสำหรับการกำหนดค่า apache) จากนั้นไฟล์การกำหนดค่าฐานข้อมูลจะเป็นเจ้าของโดย root และสามารถอ่านได้เฉพาะผู้ใช้รูท (go-rwx หรือ 400) ตามหลักวิชาการถ้า apache ตั้งค่า 000 เนื่องจากรูทจะสามารถอ่านได้
ljgww

อาปาเช่ไม่มีไม่ทำงานเหมือนรูท มันทำงานเป็น apache: apache (ผู้ใช้: กลุ่ม)
Buttle Butkus

จากนั้นทำให้ไฟล์สามารถอ่านได้โดย apache: apache เท่านั้นchown apache:apache local.xmlและจากนั้นchmod 400 local.xmlจะสามารถอ่านได้โดย apache เท่านั้น อ่าฉันเห็นคนที่พูดไปแล้ว :)
ljgww
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.