내 웹 서버에 gitweb을 설정했습니다. 서버에 프로젝트를 만들었습니다. 여기에 커밋을 추가하고 원격으로 복제할 수도 있습니다.
git.website를 방문하면 gitweb "홈페이지"가 표시되고 CSS, 로고, 파비콘과 같은 정적 파일이 로드됩니다.
문제는 다음 메시지만 표시된다는 것입니다. 해당 프로젝트를 찾을 수 없습니다.발견.. 웹페이지를 새로 고칠 때마다 /var/log/httpd/error_log에 다음이 표시됩니다.
[Wed Aug 04 00:39:32.321352 2021] [cgid:error] [pid 44346:tid 140132795492096] [client MY_HOME_IP:37700] fatal: mmap failed: Permission denied: /var/www/git/gitweb.cgi, referer: https://git.mydomain.abc/
나는 httpd가 apache 사용자로 실행되고 있고 /var/www의 소유권도 apache로 설정되어 있음을 확인했습니다. 권한이 올바르게 설정되었다고 생각합니다.
[root@git ~]# ps auxw | grep httpd
root 44780 0.2 1.6 281804 13828 ? Ss 00:48 0:00 /usr/sbin/httpd -DFOREGROUND
apache 44782 0.0 1.0 295684 8876 ? S 00:48 0:00 /usr/sbin/httpd -DFOREGROUND
apache 44783 0.0 1.7 1484604 14712 ? Sl 00:48 0:00 /usr/sbin/httpd -DFOREGROUND
apache 44784 0.0 2.2 1353476 18956 ? Sl 00:48 0:00 /usr/sbin/httpd -DFOREGROUND
apache 44785 0.0 2.0 1353476 16760 ? Sl 00:48 0:00 /usr/sbin/httpd -DFOREGROUND
apache 45019 0.0 1.7 1353476 14708 ? Sl 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 root root 4096 Aug 2 18:16 /var/
drwxr-xr-x. 5 apache apache 44 Aug 2 18:23 /var/www/
drwxr-xr-x. 8 apache apache 179 Aug 4 00:18 /var/www/git/
-rwxr-xr-x. 1 apache apache system_u:object_r:git_script_exec_t:s0 253816 Jul 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: 그리고 여기에 audit.log가 있습니다.
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="apache" FSGID="apache"
type=PROCTITLE msg=audit(1628072069.412:134): proctitle=2F7573722F62696E2F676974002D2D6769742D6469723D2F7661722F7777772F6769742F2F796F75747562652D646C2D62617463682E67697400666F722D656163682D726566002D2D666F726D61743D2528636F6D6D697474657229002D2D736F72743D2D636F6D6D697474657264617465002D2D636F756E743D3100726566
type=AVC msg=audit(1628072069.433:135): avc: denied { 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로 귀결됩니다. 모드를 다음으로 변경합니다.허용적이제 내 저장소를 모두 볼 수 있습니다. 하지만 어떻게 작동하게 만들 것인지 알아내야 합니다.시행방법..
답변1
좋습니다. 제가 몰랐던 것은 audit2why 및 audit2allow 명령이었습니다. 다음과 같이 문제 범위를 좁힌 후편집2SELinux로 이동하고 로그를 audit2로 전달한 이유는 다음과 같습니다.
The boolean domain_can_mmap_files was set incorrectly.
그리고 나는 다음을 수행해야 합니다:
Allow access by executing:
# setsebool -P domain_can_mmap_files 1
참조:https://forums.centos.org/viewtopic.php?t=71917
이제 이 문제가 해결되었습니다. 감사해요