Рейтинг:0

Как разрешить клонирование git HTTPS без пароля, но требовать его для отправки?

флаг cn

Я использую nginx, и моя текущая конфигурация сервера выглядит следующим образом:

сервер {
    слушать 443 ssl;
    слушать [::]:443 ssl;

    имя_сервера git.wozzes.me;

    ssl_certificate /etc/letsencrypt/live/wozzes.me/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/wozzes.me/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers включен;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

    # файлы статического репо для клонирования через https
    расположение ~ ^.*\.git/objects/([0-9a-f]+/[0-9a-f]+|pack/pack-[0-9a-f]+.(pack|idx))$ {
        корень /var/lib/git/repositories/;
    }

    # запросы, которые нужно отправить на git-http-backend
    location ~ ^.*\.git/(HEAD|info/refs|objects/info/.*|git-(upload|receive)-pack)$ {
        корень /var/lib/git/repositories/;

        fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
        fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend;
        fastcgi_param PATH_INFO $uri;
        fastcgi_param GIT_PROJECT_ROOT $document_root;
        fastcgi_param GIT_HTTP_EXPORT_ALL "";
        fastcgi_param REMOTE_USER $remote_user;
        включить fastcgi_params;
    }

    try_files $uri @cgit;
    местоположение @cgit {
        fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
        fastcgi_param SCRIPT_FILENAME /usr/share/webapps/cgit/cgit.cgi;
        fastcgi_param PATH_INFO $uri;
        включить fastcgi_params;
   }
}

Эта конфигурация позволяет мне клонировать репозитории без использования пароля, но также позволяет пользователям свободно отправлять данные в мои репозитории, чего я не хочу. Если я добавлю раздел авторизации в git-http-бэкенд части он также начинает требовать пароль для обычного клонирования.

Как разрешить клонирование без проверки подлинности, но требовать пароль для отправки?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.