【问题标题】:How to get Gitweb working with SELinux (on CentOS 6.5, with gitolite v3)如何让 Gitweb 与 SELinux 一起工作(在 CentOS 6.5 上,使用 gitolite v3)
【发布时间】:2014-01-27 18:17:41
【问题描述】:

我已经根据blog post 中的教程安装了 gitolite 和 gitweb。整个事情运行得非常好。我能够克隆并提交到服务器。

但是,Gitweb 没有显示错误代码为 404 - No projects found 的项目。我发现 SELinux 拒绝 gitweb.cgi 访问某些文件。 Gitweb 只有在将 SELinux 置于许可模式后才能显示存储库。

# setenforce 0

我已经尝试了几个站点的许多解决方案,但我发现它们都不适合我。比如我试过这个blog post中介绍的解决方案。

# semanage fcontext -a -t httpd_sys_content_t /var/lib/gitolite/projects.list
# restorecon -v /var/lib/gitolite/projects.list

我有以下 SELinux 日志,但我真的不知道如何处理它。我已经把这个问题搞了一整天,任何建议都值得赞赏。提前致谢

type=AVC msg=audit(1390845123.601:280): avc:  denied  { rlimitinh } for  pid=2049 comm="gitweb.cgi" scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:system_r:httpd_git_script_t:s0 tclass=process
type=AVC msg=audit(1390845123.601:280): avc:  denied  { siginh } for  pid=2049 comm="gitweb.cgi" scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:system_r:httpd_git_script_t:s0 tclass=process
type=AVC msg=audit(1390845123.601:280): avc:  denied  { noatsecure } for  pid=2049 comm="gitweb.cgi" scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:system_r:httpd_git_script_t:s0 tclass=process
type=SYSCALL msg=audit(1390845123.601:280): arch=40000003 syscall=11 success=yes exit=0 a0=1d554e0 a1=1d52e38 a2=1d52e48 a3=1d532a8 items=0 ppid=1610 pid=2049 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=2 comm="gitweb.cgi" exe="/usr/bin/perl" subj=unconfined_u:system_r:httpd_git_script_t:s0 key=(null)
type=AVC msg=audit(1390845124.272:281): avc:  denied  { search } for  pid=2049 comm="gitweb.cgi" name="gitolite" dev=dm-0 ino=658360 scontext=unconfined_u:system_r:httpd_git_script_t:s0 tcontext=system_u:object_r:gitosis_var_lib_t:s0 tclass=dir
type=SYSCALL msg=audit(1390845124.272:281): arch=40000003 syscall=195 success=no exit=-13 a0=9ce0890 a1=98f50c0 a2=996ff4 a3=98f5008 items=0 ppid=1610 pid=2049 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=2 comm="gitweb.cgi" exe="/usr/bin/perl" subj=unconfined_u:system_r:httpd_git_script_t:s0 key=(null)
type=AVC msg=audit(1390845124.273:282): avc:  denied  { search } for  pid=2049 comm="gitweb.cgi" name="gitolite" dev=dm-0 ino=658360 scontext=unconfined_u:system_r:httpd_git_script_t:s0 tcontext=system_u:object_r:gitosis_var_lib_t:s0 tclass=dir
type=SYSCALL msg=audit(1390845124.273:282): arch=40000003 syscall=195 success=no exit=-13 a0=9ce0890 a1=98f50c0 a2=996ff4 a3=98f5008 items=0 ppid=1610 pid=2049 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=2 comm="gitweb.cgi" exe="/usr/bin/perl" subj=unconfined_u:system_r:httpd_git_script_t:s0 key=(null)

【问题讨论】:

    标签: linux centos gitolite selinux gitweb


    【解决方案1】:

    您可以更改“/var/lib/gitolite”中任何文件或子目录的默认上下文,而不仅仅是 projects.list。

    # semanage fcontext -a -t httpd_sys_content_t "/var/lib/gitolite(/.*)?"
    # restorecon -v /var/lib/gitolite
    

    https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=736623上阅读更多关于拒绝的信息

    【讨论】:

    • 谢谢,几乎成功了。对于每个有同样问题的人,使用 restorecon 和 -R 递归地设置文件上下文。 # restorecon -vR /var/lib/gitolite
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    相关资源
    最近更新 更多