Задний план: Я использую виртуальную машину CentOS с установленным Apache. Веб-корень - это «/ var / www / html». Есть подкаталог ("/ var / www / html / mp3"), в котором есть два файла mp3. Оба mp3 имеют одинаковые разрешения (644). Каталог «/ mp3» имеет 755 разрешений. У меня есть база данных, в которой содержится определенная информация о песнях, и цель, в конечном счете, состоит в том, чтобы иметь возможность вводить условия поиска и иметь скрипт php, который возвращает песни, в которых есть эти ключевые слова, и позволяет вам воспроизводить их. Я использую конфигурацию по умолчанию "httpd.conf".
Проблема: Я вижу только одну из песен. При доступе к / mp3 вы получаете каталог, в котором есть только "MasterOfPuppets.mp3"; оно делает не покажите "One.mp3". Когда вы открываете "/mp3/MasterOfPuppets.mp3", это позволяет вам воспроизводить песню; при доступе к /mp3/One.mp3 отображается сообщение 403: Доступ запрещен. Я почти уверен, что это проблема с разрешениями, но, учитывая, что разрешения точно так же для обоих файлов я совершенно не понимаю, как это могло произойти.
Кто-нибудь знает, что может вызвать эту проблему? Я бился головой об стену последние 3 часа. Google подвел меня.
Редактировать:
[root@dugan mp3]# ls -lrtZ *mp3
-rw-r--r--. root root unconfined_u:object_r:home_root_t:s0 One.mp3
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 MasterOfPuppets.mp3
Edit2:
Это была проблема SELinux. Я нашел здесь документацию: Вот
в папке «/ mp3» я ввел «chcon -t httpd_sys_content_t One.mp3» и сделал еще один «ls -lrtZ * mp3», что дало мне следующее:
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 One.mp3
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 MasterOfPuppets.mp3
Проблема решена, теперь я могу получить доступ к One.mp3. SELinux - лучший Linux. Всем спасибо за помощь.
Скопировано из комментария к ответу:
Вы говорите «странная проблема с разрешением в CentOS», я думаю, «selinux». Проверьте /var/log/audit/audit.log и посмотрите, упоминается ли One.mp3.