SELinux の問題 - git ステータスが致命的: メモリ不足? mmap が失敗しました: 権限が拒否されました

SELinux の問題 - git ステータスが致命的: メモリ不足? 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ただし、このファイルのタイプは、実際には正当なファイル タイプではなく、プロセス (またはドメイン タイプとして知られているタイプ) です。

ウェブサーバーが に書き込めるようにしたい場合は、 のコンテキストを または に/www設定する必要があります。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再度テストして、動作を確認します。

関連情報