我在运行 GitLab 的服务器上运行 GitWeb(本质上是 CGI 脚本)。我的目标是提供对 GitLab 存储库的只读访问权限,而无需注册人员。
我已将 GitWeb 指向具有drwxrws---
所有者:组权限的存储库文件夹git:git
。FastCGI 包装器正在使用用户:组运行www-data:www:data
,因此我将其添加www-data
到git
组。我还www-data
通过更改为该用户来验证对存储库的访问权限。
但是,当我运行 GitWeb 时,CGI 脚本无法访问存储库,也无法获取我的存储库列表。如果我向r-x
其他部分(最后三元组)添加权限,一切都会正常,但由于显而易见的原因,我不想弄乱文件夹的权限。
顺便说一句,我正在运行 Debian 稳定版,并没有安装 SE-Linux 或类似的东西。
任何帮助将不胜感激。
答案1
我已经找到并修复了这个问题。实际上这是 nginx 的一个错误。
通常,在 下nginx.conf
,有一个用户指令用于设置 nginx 的setuid()
/setgid()
行为,该指令的语法是user <username> <groupname>
。文档[1] 指出,如果省略<groupname>
,<username>
将用作组。然而,事实并非如此,nginx 默认为组nobody
。当我明确添加组时www-data
,一切都开始正常工作。