Рейтинг:1

Отказано в доступе для gitweb.cgi в CentOS

флаг cn

Я настроил gitweb на своем веб-сервере. Я создал проекты на сервере. Я могу добавлять к ним коммиты, а также клонировать их удаленно.

«Домашняя страница» gitweb отображается, и статические файлы, такие как css, logo, favicon, загружаются, когда я посещаю свой git.website.

Проблема в том, что я вижу только сообщение: Таких проектов не найдено найденный.. Каждый раз, когда я обновляю веб-страницу, я вижу следующее в моем /var/log/httpd/error_log

[Среда, 04 августа, 00:39:32.321352 2021] [cgid:error] [pid 44346:tid 140132795492096] [client MY_HOME_IP:37700] фатальный: ошибка mmap: Отказано в доступе: /var/www/git/gitweb.cgi, реферер: https://git.mydomain.abc/

Я подтвердил, что httpd работает как пользователь apache, а право собственности на /var/www также установлено для apache. Разрешения также настроены правильно, я считаю:

[root@git ~]# ps auxw | grep httpd
корень 44780 0,2 1,6 281804 13828 ? СС 00:48 0:00 /usr/sbin/httpd -DFOREGROUND
апач 44782 0.0 1.0 295684 8876 ? S 00:48 0:00 /usr/sbin/httpd -DFOREGROUND
апач 44783 0,0 1,7 1484604 14712 ? Сл 00:48 0:00 /usr/sbin/httpd -DFOREGROUND
апач 44784 0.0 2.2 1353476 18956 ? Сл 00:48 0:00 /usr/sbin/httpd -DFOREGROUND
апач 44785 0.0 2.0 1353476 16760 ? Сл 00:48 0:00 /usr/sbin/httpd -DFOREGROUND
апач 45019 0.0 1.7 1353476 14708 ? Сл 00:48 0:00 /usr/sbin/httpd -DFOREGROUND
root 45141 0.0 0.1 221928 1140 pts/0 S+ 00:48 0:00 grep --color=auto httpd
[root@git ~]# ls -ld /var/ /var/www/ /var/www/git/ ; ls -lZ /var/www/git/gitweb.cgi 
drwxr-xr-x. 21 корень корень 4096 2 авг 18:16 /var/
drwxr-xr-x. 5 апач апач 44 авг 2 18:23 /var/www/
drwxr-xr-x. 8 апач апач 179 4 августа 00:18 /var/www/git/
-rwxr-xr-x. 1 apache apache system_u:object_r:git_script_exec_t:s0 253816 20 июля 2020 г. /var/www/git/gitweb.cgi
[root@git ~]# 

/etc/gitweb.conf

$projectroot = '/var/www/git/';
$git_temp = "/tmp";
$stylesheet = "static/gitweb.css";
$logo = "static/git-logo.png";
$favicon = "static/git-favicon.png";

/etc/httpd/conf.d/gitweb-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName git.mydomain.abc 
    DocumentRoot /var/www/git
    <Directory /var/www/git>
        SetEnv  GITWEB_CONFIG  /etc/gitweb.conf
        Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All
        order allow,deny
        Allow from all
        AddHandler cgi-script .cgi
        DirectoryIndex gitweb.cgi
    </Directory>
    <Files gitweb.cgi>
        SetHandler cgi-script
    </Files>
SSLCertificateFile /etc/letsencrypt/live/git.mydomain.abc/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/git.mydomain.abc/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Если кто-нибудь увидит, что я сделал неправильно, я буду очень признателен за некоторые советы. Спасибо!

РЕДАКТИРОВАТЬ1: А вот и аудит.лог

type=SYSCALL msg=audit(1628072069.412:134): arch=c000003e syscall=9 success=no exit=-13 a0=0 a1=b9 a2=1 a3=2 items=0 ppid=2911 pid=2917 auid=4294967295 uid =48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="git" exe="/usr/bin/git" subj=system_u: system_r:git_script_t:s0 key=(null)ARCH=x86_64 SYSCALL=mmap AUID="unset" UID="apache" GID="apache" EUID="apache" SUID="apache" FSUID="apache" EGID="apache "SGID="апач" FSGID="апач"
type=PROCTITLE msg=audit(1628072069.412:134): proctitle=2F7573722F62696E2F676974002D2D6769742D6469723D2F7661722F7777772F6769742F2F796F75747562652D646C2D62617463682E67697400666F722D656163682D726566002D2D666F726D61743D2528636F6D6D697474657229002D2D736F72743D2D636F6D6D697474657264617465002D2D636F756E743D3100726566
type=AVC msg=audit(1628072069.433:135): avc: deny {map} for pid=2919 comm="git" path="/var/www/git/myrepo01.git/objects/1c/1c5ca1a07da5187a696cd1661d6b2a734ad98c" dev=" vda1" ino=36639 scontext=system_u:system_r:git_script_t:s0 tcontext=unconfined_u:object_r:git_content_t:s0 tclass=file permissive=0

РЕДАКТИРОВАТЬ2 Проблема сводится к SELinux, в котором я не являюсь экспертом. Изменение режима на Разрешительный Теперь я могу видеть все свои репозитории. Однако я должен выяснить, как заставить его работать с Принудительный Режим..

Michael Hampton avatar
флаг cz
Проверьте журнал аудита.
carlitobrigante avatar
флаг cn
Привет, Майкл, я проверил журнал аудита, и он снова указывает на сообщение «отказано».из того, что я вижу, разрешения есть, но при попытке доступа к моим репозиториям git происходит сбой, я добавил его в основной пост.
carlitobrigante avatar
флаг cn
Кажется, что SELinux предотвращает это, но я все еще пытаюсь выяснить, какие именно параметры мне нужно изменить, чтобы разрешить выполнение сценария cgi.
Рейтинг:0
флаг cn

Итак, я не знал о командах audit2why и audit2allow. После сужения вопросов согласно РЕДАКТИРОВАТЬ2 в SELinux и передал журнал в audit2why, который сообщил мне, что:

Логическое значение domain_can_mmap_files задано неправильно.

и я должен:

Разрешите доступ, выполнив:
# setsebool -P domain_can_mmap_files 1

Ссылка: https://forums.centos.org/viewtopic.php?t=71917

Теперь это решено. Спасибо

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.