LINUX.ORG.RU
решено ФорумAdmin

Apache показывает ошибку 403 на некоторых файлах

 , , ,


0

1

Привет, народ.

Имеется репозитарий, который выложен на HTTP сервере. Проблема в том, что некоторые файлы Apache не отдает с ошибкой 403. Например:

http://192.168.10.251/astra_rep/se17devupdate2/pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb

http://192.168.10.251/astra_rep/se17devupdate2/pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb

Первый файл, с более длинным именем и путем - отдается. А второй файл, с более коротким именем и путем - нет. Какая-то дичь. Я не могу понять почему. Наткнулся на это ошибку из-за того, что apt-get install не мог получить именно второй пакет:
Ошб:1 http://192.168.10.251/astra_rep/se17devupdate2 1.7_x86-64/main amd64 linux-firmware all 20220329.git681281e4-0ubuntu1+ci202207182106+astra2
  403  Forbidden [IP: 192.168.10.251 80]
E: Не удалось получить http://192.168.10.251/astra_rep/se17devupdate2/pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb  403  Forbidden [IP: 192.168.10.251 80]
E: Не удалось получить некоторые архивы; возможно, нужно запустить apt-get update или попытаться повторить запуск с ключом --fix-missing?
Чтение списков пакетов… Готово

Вот как происходит получение файлов через wget (первый - нормально, второй - с ошибкой):
$ wget "http://192.168.10.251/astra_rep/se17devupdate2/pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb"
--2022-11-17 16:39:46--  http://192.168.10.251/astra_rep/se17devupdate2/pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb
Подключение к 192.168.10.251:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 1613088 (1,5M) [application/x-debian-package]
Сохранение в: «libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci20220704
1218+astra4_all.deb»
libreoffice-wiki-publisher_1.2.0+L 100%[=============================================================>]   1,54M  --.-KB/s    in 0,1s
2022-11-17 16:39:46 (11,9 MB/s) - «libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb» сохранён [1613088/1613088]

$ wget "http://192.168.10.251/astra_rep/se17devupdate2/pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb"
--2022-11-17 16:39:56--  http://192.168.10.251/astra_rep/se17devupdate2/pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb
Подключение к 192.168.10.251:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 403 Forbidden
2022-11-17 16:39:56 ОШИБКА 403: Forbidden.


Я проверил, файл linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb существует, путь правильный.

Права на файлы идентичные:
$ ls -l ./pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb
-rw-r--r-- 1 security security 1613088 сен 29 14:06 ./pool/main/libr/libreoffice/libreoffice-wiki-publisher_1.2.0+LibO7.2.7-0ubuntu0.21.10.1~bpo20.04.1+ci202207041218+astra4_all.deb

$ ls -l ./pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb
-rw-r--r-- 1 security security 214471224 сен 29 14:04 ./pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1+ci202207182106+astra2_all.deb


Права на дикретории идентичные:
$ ls -l ./pool/main/libr | grep "libreoffice$"
drwxr-xr-x 2 security security 16384 окт  4 20:13 libreoffice

$ ls -l ./pool/main/l | grep "linux-firmware$"
drwxr-xr-x 2 security security 4096 окт  4 20:12 linux-firmware


Но почему-то один файл отдается, второй - нет. Что еще и где надо проверить, чтобы понять почему Apache на этом файле спотыкается?

★★★★★

ls -al ./pool/main

Ты проверил всё, кроме прав на pool/main/l и pool/main/libr, наверно в них и разница.

И проверь урлами директории, какие показываются какие нет.

А ещё можно посмотреть лог сервера.

Ну и сколько можно, опять апач, нафига? Ставь nginx.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от slowpony

Небось косячное правило ограничивает доступ к файлам с подстрокой .git в имени

Дело оказалось в Apache-модуле gitweb.

Там была какая-то опция для обработки dot-каталогов ".git" или что-то в этом роде. Точно сказать не могу (настройки делал другой человек), а я затупил и вместо того чтоб удалить линк в enabled, случайно удалил сам конфиг в availabled, когда хотел временно отключить модуль.

Пришлось конфиг gitweb.conf писать с нуля. И с моим новым конфигом проблема исчезла.

Наверно, если бы я раскурил опцию и подправил регулярку в прежнем конфиге, проблема бы тоже исчезла. Но конфиг был удален, и что там за опция и регулярка была уже понять невозможно.

Xintrea ★★★★★
() автор топика