Score:1

การอนุญาตถูกปฏิเสธสำหรับ gitweb.cgi บน CentOS

ธง cn

ฉันได้ตั้งค่า gitweb บนเว็บเซิร์ฟเวอร์ของฉันแล้ว ฉันได้สร้างโครงการบนเซิร์ฟเวอร์ ฉันสามารถเพิ่มคอมมิชชันให้กับพวกเขาและโคลนพวกเขาจากระยะไกลได้

"โฮมเพจ" gitweb ปรากฏขึ้นและไฟล์สแตติกเช่น css, โลโก้, 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 | เกรป httpd
ราก 44780 0.2 1.6 281804 13828 ? Ss 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
ราก 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 apache apache 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
[รูท@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 สำเร็จ=ไม่มีทางออก=-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=(ไม่มี) ses=4294967295 comm="git" exe="/usr/bin/git" subj=system_u: system_r:git_script_t:s0 คีย์=(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: ปฏิเสธ { แผนที่ } สำหรับ 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 อนุญาต=0

แก้ไข2 ปัญหาเกิดขึ้นที่ SELinux ซึ่งฉันไม่เชี่ยวชาญ การเปลี่ยนโหมดเป็น อนุญาต ตอนนี้ฉันเห็น repos ทั้งหมดของฉันแล้ว.. อย่างไรก็ตามฉันต้องหาวิธีทำให้มันใช้งานได้ บังคับใช้ โหมด..

Michael Hampton avatar
cz flag
ตรวจสอบบันทึกการตรวจสอบ
carlitobrigante avatar
cn flag
สวัสดี ไมเคิล ฉันได้ตรวจสอบบันทึกการตรวจสอบแล้ว และมันชี้ไปที่ข้อความ "ถูกปฏิเสธ" อีกครั้ง..จากที่ฉันเห็นว่ามีสิทธิ์อยู่ แต่เมื่อพยายามเข้าถึง repos git ของฉัน มันล้มเหลว ฉันจึงเพิ่มเข้าไปในโพสต์หลัก
carlitobrigante avatar
cn flag
ดูเหมือนว่า SELinux จะป้องกันมัน แต่ฉันยังคงพยายามหาตัวเลือกที่ฉันต้องแก้ไขเพื่อให้สคริปต์ cgi ทำงานได้ ..
Score:0
ธง cn

ตกลง ดังนั้นบางสิ่งที่ฉันไม่รู้คือคำสั่ง audit2why และ audit2allow.. หลังจากตีกรอบเป็นประเด็นตาม แก้ไข2 ไปที่ SELinux และส่งต่อล็อกโอเวอร์ไปยัง audit2 ว่าทำไมจึงอัปเดตฉันว่า:

ตั้งค่าบูลีน domain_can_mmap_files ไม่ถูกต้อง

และฉันต้อง:

อนุญาตการเข้าถึงโดยดำเนินการ:
# setsebool -P โดเมน_can_mmap_files 1

อ้างอิง: https://forums.centos.org/viewtopic.php?t=71917

ขณะนี้ได้รับการแก้ไขแล้ว ขอบคุณ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา