SELinux 問題 - git status fatal:記憶體不足? mmap 失敗:權限被拒絕

SELinux 問題 - git status fatal:記憶體不足? mmap 失敗:權限被拒絕

我有 Centos 7.9 伺服器,運行 Apache 和 Git,但如果我執行

[root@a]# git status
fatal: Out of memory? mmap failed: Permission denied

但如果透過以下命令停用或允許 SE-Linux,它就會開始正常運作。

setenforce Permissive

您知道如何在啟用 SELinux 的情況下永久解決此問題嗎?

審計日誌說

node=a type=PROCTITLE msg=audit(1630636505.296:37076): proctitle=67697400737461747573
node=a type=MMAP msg=audit(1630636505.296:37076): fd=3 flags=0x2
node=a type=SYSCALL msg=audit(1630636505.296:37076): arch=c000003e syscall=9 success=no exit=-13 a0=0 a1=3ebd0 a2=3 a3=2 items=0 ppid=8008 pid=8156 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=570 comm="git" exe="/usr/bin/git" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
node=a type=AVC msg=audit(1630636505.296:37076): avc:  denied  { map } for  pid=8156 comm="git" path="/www/site/.git/index" dev="sda2" ino=540400 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:httpd_t:s0 tclass=file permissive=0

答案1

問題是您正在映射的這個檔案:

/www/site/.git/index

然而,該文件的類型httpd_t實際上並不是合法的文件類型,而是一個進程(或已知的域類型)。

如果您想要允許網頁伺服器對其進行寫入,您可能應該將 的上下文設為/wwwbeing或。httpd_sys_content_thttpd_sys_content_rw_t

如果我必須猜測,我會假設你犯了一個chcon -t httpd_t錯誤/www

正確解決此問題的最佳方法是重置和恢復文件上下文:

# semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'
# restorecon -rv /www

這應該設定正確的上下文並防止將來發生上下文錯誤。

然後再次測試git status以檢查其是否有效。

相關內容