Назад | Перейти на главную страницу

Разрешения CGI с NGINX и FastCGI

Я запускаю 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 явно все заработало как надо.

[1] http://wiki.nginx.org/CoreModule#user