Я запускаю GitWeb (который по сути является сценарием CGI) на сервере, на котором также работает GitLab. Моя цель - предоставить доступ только для чтения к репозиториям GitLab без регистрации людей.
Я указал GitWeb на папку моих репозиториев, у которых есть разрешения drwxrws---
с владельцем: группа git:git
. Оболочка FastCGI работает с пользователем: группа www-data:www:data
, поэтому я добавил www-data
к git
группа. Я также подтвердил доступ к www-data
в репозитории, перейдя на этого пользователя.
Однако, когда я запускаю GitWeb, сценарий CGI не может получить доступ к репозиториям и не может получить мой список репозиториев. Все нормально работает, если добавить r-x
разрешения для другой части (последний триплет), но я не хочу связываться с разрешениями папок по очевидным причинам.
Кстати, я использую стабильную версию Debian и не устанавливаю SE-Linux или что-то подобное.
Любая помощь будет оценена по достоинству.
Я нашел и устранил проблему. На самом деле это ошибка nginx.
Обычно под nginx.conf
, есть пользовательская директива, которая устанавливает nginx setuid()
/setgid()
поведение и синтаксис директивы user <username> <groupname>
. В документации [1] указано, что если вы опустите <groupname>
, <username>
будет использоваться как группа. Однако это не так, и nginx по умолчанию группирует nobody
. Когда я добавил группу www-data
явно все заработало как надо.