การจัดการสิทธิ์อนุญาตบน Fedora ด้วย Gimp


0

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

การอนุญาตถูกตั้งค่าเป็น 755 (โฟลเดอร์) และ 644 (ไฟล์) เมื่อฉันเปิดภาพใน Gimp และบันทึกเป็นไฟล์ใหม่เบราว์เซอร์จะแสดงรูปภาพแม้ว่าฉันจะไม่เปลี่ยนแปลงอะไรก็ตาม เพียงแค่เปิดและบันทึก สิ่งนี้คือฉันมีหลายร้อยภาพและฉันไม่ต้องการที่จะดำเนินการเปิดทุกภาพเป็นรายบุคคล ไฟล์ใหม่และไฟล์ต้นฉบับมีสิทธิ์เหมือนกัน นี่เป็นข้อพิสูจน์: ไฟล์ที่มีเครื่องหมายขีดล่างอยู่ท้ายสุด (Baummarder Mai 14_.JPG) ที่เหลือไม่ได้

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

Error_log พูดว่า:

(13)Permission denied: [client 127.0.0.1:38192] AH00035: access to /auwaldstation/quiz/Wildkamera/Bilder/Wildschwein/SchweinCdy00008.JPG denied (filesystem path '/var/www/html/auwaldstation/quiz/Wildkamera/Bilder/Wildschwein/SchweinCdy00008.JPG') because search permissions are missing on a component of the path, referer: http://localhost/auwaldstation/quiz/wildkamera_bilder.php

แม้ว่าfilepath ที่สมบูรณ์จะไม่ถูกตั้งค่าเป็น 755

(ไม่ต้องกังวลว่ามันเป็นไฟล์ที่แตกต่างกันในโฟลเดอร์ย่อยที่แตกต่างกัน - การอนุญาตและวิธีรวมไว้ในหน้า IS เหมือนกัน)

ฉันอยากรู้มากเกี่ยวกับสิ่งที่อาจเป็นปัญหา อาจเป็นเพราะ meta-data หรือไม่ ฉันตรวจสอบสิ่งเหล่านั้น แต่ไม่พบสิ่งใดที่ชัดเจน เป็นไปได้หรือไม่ว่าไฟล์เหล่านั้นเกิดความเสียหายหรือมีข้อมูลเมตา / ส่วนหัวที่ไม่ถูกต้องหรือสิ่งใดก็ตามที่ทำให้เกิดพฤติกรรมดังกล่าว มันเป็นข้อผิดพลาดที่แปลก / คุณสมบัติของการจัดการสิทธิ์เช่นไฟล์ที่ฉันไม่ได้สร้างฉันไม่ได้เป็นเจ้าของ?

มีวิธีแก้ปัญหานี้ไหม? เป็นไปได้ไหมที่จะแสดงรูปภาพเหล่านั้นด้วยการใช้ PHP-magic?

UPDATE : ฉันเพิ่งพบว่า PHP-code ต่อไปนี้ไม่รู้จักรูปภาพต้นฉบับเป็นรูปภาพเลย สิ่งที่สร้างขึ้นใหม่จะรับรู้เป็นรูปภาพได้

function is_image($path)
{
    $a = getimagesize($path);
    $image_type = $a[2];

    if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP)))
    {
        return true;
    }
    return false;
}

Btw: ภาพที่ถ่ายโดยกล้องเวบแคม ไม่มีข้อขัดแย้งด้านลิขสิทธิ์ที่เกี่ยวข้อง

การใช้: Fedora 23, Apache 2.4.23, PHP, HTML / CSS


ข้อความแสดงข้อผิดพลาดระบุค่อนข้างชัดเจนว่าไดเรกทอรีในพา ธ ขาดการตั้งค่าสถานะ "execute" ... ในกรณีใด ๆ Errno = 13 ไม่ได้มาจากข้อมูลในไฟล์เพราะมันหมายความว่าไฟล์ไม่สามารถอ่านได้เลย
xenoid

อย่างที่ฉันเขียนไว้ในโพสต์ของฉันฉันมีรูปภาพที่ทำงานในโฟลเดอร์เดียวกันมากกว่ารูปภาพที่ไม่ทำงาน ดังนั้นจึงไม่แน่นอนเนื่องจากการตั้งค่าสถานะ "execute" ที่ขาดหายไป
Mathias Heinze

แต่ทำไมไฟล์ถึงอ่านไม่ได้เลย ??? ข้อแตกต่างระหว่างไฟล์ที่สามารถอ่านและไฟล์ที่ไม่สามารถทำได้คือฉันสร้างไฟล์ที่สามารถอ่านได้ด้วย Gimp ไฟล์อยู่ในโฟลเดอร์เดียวกันสิทธิ์เหมือนกัน ไม่มีไฟล์ htaccess- ไม่มีอะไรเลย
Mathias Heinze

คุณมีจุดที่ส่วนท้ายของการอนุญาตการตั้งค่าสถานะ ... ซึ่งหมายความว่ามีสิทธิ์ SELinux ตั้งเช่นกัน ...
xenoid

ขอบคุณไม่เคยได้ยินบริบท selinux มาก่อน
Mathias Heinze

คำตอบ:


2

วิธีแก้ปัญหาเกี่ยวข้องกับบริบทของ SELINUX เปลี่ยนบริบทผ่าน chcon ตอนนี้มันใช้งานได้ http://www.linux-commands-examples.com/chcon


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