yum репозиторий отвечает ошибкой [Errno 14] HTTP Error 403 – Запрещено

Вопрос или проблема

Я пытаюсь настроить репозиторий YUM, содержащий некоторые RPM-пакеты из нашей ночной сборки Jenkins.

Репозиторий YUM находится на сервере Jenkins в папке репозитория [путь к репозиторию]/jenkins-nightly-build/[имя релиза]-repo. После завершения всех задач они помещаются в репозиторий. В конце обновляются метаданные репозитория.

Однако, когда я пытаюсь обновить другой компьютер, репозиторий отвечает с кодом [Errno 14] HTTP Error 403 - Forbidden.

Вот файл .repo, который находится на клиентском компьютере:

[jenkins-nightly]
name=jenkins-nightly
baseurl=http://[имя хоста]/jenkins-nightly-build/[имя релиза]-repo
gpgcheck=0
enabled=1

Как видите, файл .repo довольно простой. Я пробовал yum clean all, и yum repolist действительно выводит соответствующий репозиторий. Все ожидаемые пакеты выводятся, и скачивание пытается произойти, когда вызывается yum update. По какой-то причине клиент не имеет к нему доступа.

Есть ли какой-то другой конфигурационный файл, который мне нужно отредактировать? Может, Apache, который был установлен для Jenkins, мешает репозиторию YUM? Пожалуйста, помогите!!! Дайте знать, если нужна дополнительная информация.

Я понял, и это было так просто!

Чтобы решить эту проблему, мне пришлось отключить SELinux и перезагрузить сервер.

Вот и всё.

Возможно, у вас нет пароля для перезагрузки сервера.
Отключить без перезагрузки невозможно.
Но режим можно установить в разрешительный. (только для этой сессии!)

setenforce 0 (изменяет с принудительного на разрешительный)

sestatus (чтобы подтвердить текущий режим)

источники:

Как отключить selinux

оригинальный ответ

subscription-manager refresh помог решить аналогичную проблему на сервере RHEL 7.9.

Ответы по SELinux, вероятно, наиболее полезны, но в моем случае сетевой трафик был заблокирован нашим отделом ИТ и репозиторий, о котором идет речь, нужно было добавить в наше зеркало Satellite.

Я столкнулся с аналогичной проблемой с [Errno 14] HTTP Error 403 - Forbidden, когда настраивал репозиторий YUM для пользовательских RPM, и вот как я это решил:


Этапы для решения проблемы

  1. Проверьте права доступа к директории
    Убедитесь, что директория репозитория и её содержимое доступны веб-серверу:

    sudo chmod -R 755 /путь/к/репозиторию/
    sudo chown -R apache:apache /путь/к/репозиторию/
    
  2. Настройте конфигурации Apache
    Убедитесь, что Apache позволяет доступ к директории репозитория. Добавьте это в ваш файл конфигурации Apache (например, /etc/httpd/conf.d/repo.conf):

    <Directory /путь/к/репозиторию/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    

    Перезапустите службу Apache:

    sudo systemctl restart httpd
    
  3. Временно отключите SELinux для тестирования
    SELinux часто блокирует доступ к файлам. Чтобы быстро проверить, является ли проблема связанной с SELinux, временно отключите его:

    sudo setenforce 0
    

    Если это исправит проблему, вы можете навсегда отключить SELinux, следуя этому подробному руководству: Как отключить SELinux на CentOS 7.

  4. Проверьте настройки брандмауэра
    Убедитесь, что HTTP-трафик разрешен через брандмауэр:

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --reload
    
  5. Проверьте доступность
    Убедитесь, что репозиторий доступен с клиентского компьютера:

    curl -I http://[имя хоста]/jenkins-nightly-build/[имя релиза]-repo
    

    Ищите ответ 200 OK.


Советы по устранению неполадок

  • Проверьте журналы Apache (/var/log/httpd/error_log и /var/log/httpd/access_log) на наличие конкретных ошибок.
  • Используйте yum clean all и попробуйте снова получить метаданные, чтобы исключить проблемы с кэшированием:
    sudo yum clean all
    sudo yum repolist
    

Полезные ссылки

Во время устранения неполадок я нашел эти ресурсы особенно полезными:

Эти руководства предоставили практические шаги и идеи, что упростило решение проблемы. Следуя вышеуказанным шагам, я смог правильно настроить свой репозиторий YUM.

Ответ или решение

Решение проблемы с YUM репозиторием: ошибка [Errno 14] HTTP Error 403 – Forbidden

При настройке YUM репозитория, содержащего RPM пакеты, могут возникать различные проблемы, одной из которых является ошибка [Errno 14] HTTP Error 403 - Forbidden. Эта ошибка свидетельствует о том, что доступ к запрашиваемому ресурсу запрещен. Давайте рассмотрим наиболее вероятные причины и способы их устранения.

1. Проверка прав доступа к директории

Первая вещь, которую нужно проверить, это права доступа к директории репозитория. Убедитесь, что ваш веб-сервер (например, Apache) имеет доступ к содержимому репозитория. Выполните следующие команды:

sudo chmod -R 755 /path/to/repo/
sudo chown -R apache:apache /path/to/repo/

Эти команды установят права на чтение и выполнение для всех пользователей и изменят владельца директории на пользователя Apache.

2. Настройка конфигурации Apache

Необходимо убедиться, что конфигурация Apache позволяет доступ к директории вашего репозитория. Добавьте следующие строки в конфигурационный файл Apache, например, в файл /etc/httpd/conf.d/repo.conf:

<Directory /path/to/repo/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

После внесения изменений перезапустите службу Apache:

sudo systemctl restart httpd

3. Проверка SELinux

Безопасность SELinux может блокировать доступ к вашим файлам. Чтобы быстро проверить, является ли SELinux причиной проблемы, временно отключите его:

sudo setenforce 0

Если данное решение устраняет проблему, то вы можете рассмотреть его постоянное отключение или настройку SELinux для разрешения доступа к репозиторию. Дополнительную информацию о методах отключения SELinux можно найти в руководствах, таких как Управление SELinux на CentOS.

4. Проверка правил файрвола

Убедитесь, что ваш файрвол позволяет HTTP-трафик. Выполните следующие команды для добавления HTTP-сервиса и перезагрузки конфигурации файрвола:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

5. Тестирование доступности

Для подтверждения доступа к репозиторию используйте команду curl:

curl -I http://[hostname]/jenkins-nightly-build/[release-name]-repo

В результате команда должна вернуть статус 200 OK, что указывает на успешный доступ к репозиторию.

Рекомендации по устранению неисправностей

  • Проверьте журналы Apache на наличие ошибок (/var/log/httpd/error_log и /var/log/httpd/access_log).
  • Используйте команду yum clean all для очистки кэша и повторите попытку получения метаданных:
sudo yum clean all
sudo yum repolist

Заключение

После выполнения вышеуказанных действий вы должны устранить сообщение об ошибке [Errno 14] HTTP Error 403 - Forbidden при работе с вашим YUM репозиторием. Осуществляйте регулярные проверки конфигурации и прав доступа к репозиторию, чтобы минимизировать вероятность возникновения подобных проблем в будущем.

Оцените материал
Добавить комментарий

Капча загружается...