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实际上并不是合法的文件类型,而是一个进程(或者已知的域类型)。

您可能应该将上下文设置/wwwhttpd_sys_content_t或是否要允许网络服务器对其进行写入httpd_sys_content_rw_t

如果我不得不猜测,我会认为你做错chcon -t httpd_t/www

解决此问题的最佳方法是重置并恢复文件上下文:

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

这应该设置正确的上下文并防止将来出现上下文事故。

然后再次测试git status以检查它是否有效。

相关内容