Điểm:1

Quyền bị từ chối đối với gitweb.cgi trên CentOS

lá cờ cn

Tôi đã thiết lập gitweb trên máy chủ web của mình. Tôi đã tạo các dự án trên máy chủ. Tôi có thể thêm các cam kết vào chúng và cũng có thể sao chép chúng từ xa.

"Trang chủ" của gitweb hiển thị và các tệp tĩnh như css, logo, favicon được tải khi tôi truy cập git.website của mình.

Vấn đề là tôi chỉ thấy thông báo: Không tìm thấy dự án nào như vậy thành lập.. Mỗi lần tôi làm mới trang web, tôi thấy thông tin sau trong /var/log/httpd/error_log của mình

[Thứ tư ngày 04 tháng 8 00:39:32.321352 năm 2021] [cgid:error] [pid 44346:tid 140132795492096] [máy khách MY_HOME_IP:37700] gây tử vong: mmap không thành công: Quyền bị từ chối: /var/www/git/gitweb.cgi, người giới thiệu: https://git.mydomain.abc/

Tôi đã xác nhận rằng httpd đang chạy với tư cách là người dùng apache và cũng có quyền sở hữu/var/www được đặt thành apache. Tôi tin rằng các quyền cũng được thiết lập đúng cách:

[root@git ~]# ps auxw | grep httpd
gốc 44780 0,2 1,6 281804 13828? Ss 00:48 0:00 /usr/sbin/httpd -NỀN TẢNG
apache 44782 0,0 1,0 295684 8876? S 00:48 0:00 /usr/sbin/httpd -NỀN TẢNG
apache 44783 0,0 1,7 1484604 14712? Sl 00:48 0:00 /usr/sbin/httpd -NỀN TẢNG
apache 44784 0,0 2,2 1353476 18956? Sl 00:48 0:00 /usr/sbin/httpd -NỀN TẢNG
apache 44785 0,0 2,0 1353476 16760? Sl 00:48 0:00 /usr/sbin/httpd -NỀN TẢNG
apache 45019 0,0 1,7 1353476 14708? Sl 00:48 0:00 /usr/sbin/httpd -NỀN TẢNG
gốc 45141 0,0 0,1 221928 1140 điểm/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 gốc gốc 4096 ngày 2 tháng 8 18:16 /var/
drwxr-xr-x. 5 apache apache 44 ngày 2 tháng 8 18:23 /var/www/
drwxr-xr-x. 8 apache apache 179 ngày 4 tháng 8 00:18 /var/www/git/
-rwxr-xr-x. 1 apache apache system_u:object_r:git_script_exec_t:s0 253816 Ngày 20 tháng 7 năm 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>

Nếu có ai nhìn thấy những gì tôi đã làm sai, tôi sẽ đánh giá rất cao một số hướng dẫn.. Cảm ơn!

CHỈNH SỬA1: Và đây là 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: bị từ chối { 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

CHỈNH SỬA2 Vấn đề bắt nguồn từ SELinux mà tôi không phải là chuyên gia. Thay đổi chế độ thành dễ dãi Bây giờ tôi có thể xem tất cả các repos của mình.. Tuy nhiên tôi phải tìm ra cách làm cho nó hoạt động với thi hành cách thức..

Michael Hampton avatar
lá cờ cz
Kiểm tra nhật ký kiểm tra.
carlitobrigante avatar
lá cờ cn
Xin chào Michael, tôi đã kiểm tra nhật ký kiểm tra và nó lại trỏ đến thông báo "bị từ chối"..từ những gì tôi có thể thấy các quyền ở đó nhưng khi cố gắng truy cập kho lưu trữ git của tôi thì không thành công, tôi đã thêm nó vào bài đăng chính.
carlitobrigante avatar
lá cờ cn
Có vẻ như SELinux đang ngăn chặn điều đó nhưng tôi vẫn đang cố gắng tìm ra chính xác những tùy chọn nào tôi phải sửa đổi để cho phép tập lệnh cgi được thực thi..
Điểm:0
lá cờ cn

OK, vì vậy một số thứ mà tôi không biết là các lệnh audit2why và audit2allow.. Sau khi thu hẹp các vấn đề theo CHỈNH SỬA2 đến SELinux và chuyển nhật ký sang audit2why nó ​​đã cập nhật cho tôi rằng:

Boolean domain_can_mmap_files được đặt không chính xác.

và tôi phải:

Cho phép truy cập bằng cách thực hiện:
# setsebool -P miền_can_mmap_files 1

Tham khảo: https://forums.centos.org/viewtopic.php?t=71917

Việc này giờ đã được giải quyết rồi. Cảm ơn

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.