Данный проект содержит скрипт, не позволяющий коммитить в гитлаб от имени посторонних или несуществующих пользователей. Проверка авторства коммитов производится через LDAP.
Для работы скрипта нужно:
- GitLab Community Edition с включенной аутентификацией через LDAP.
- Программы curl, jq и ldapsearch из пакета openldap-clients.
- Скопируйте скрипт 2-check в каталог /opt/gitlab/embedded/service/gitlab-shell/hooks/pre-receive.d/.
- Отредактируйте в начале скрипта переменные GITLAB_BASE, GITLAB_API, AUTH_TOKEN, LDAP_URL, BASE_DN, BIND_DN, BIND_PASSWORD, REPO_BASE, ADMIN_CONTACT.
- Сделайте коммит от имени несуществующего пользователя
git commit --author "Vasya Pupkin <[email protected]>"
. - Выполните push
git push
При правильной установке и настройке скрипта, push будет отвергнут, и с сервера GitLab придет ответ примерно такого вида:
Внимание! Скриптом pre-receive-hook обнаружены следующие ошибки:
1. В LDAP не найден email владельца коммита "[email protected]". Исправьте коммит 7e6a1cb8193cb8d2ff2273e36ae779caf0aaa57e и повторите push.
2. В LDAP не найден email автора изменений "[email protected]". Исправьте коммит 7e6a1cb8193cb8d2ff2273e36ae779caf0aaa57e и повторите push.
Push заблокирован. Выполните указанные рекомендации или обратитесь за помощью к Vasya Pupkin <[email protected]>.
Чтобы отключить проверки для отдельных репозиториев, добавьте значения в массивы mirrors или forks. Если путь к репозиторию соответствует одному из шаблонов в массиве forks, то допускается пуш коммитов других пользователей. Если путь к репозиторию соответствует одному из шаблонов в массиве mirrors, то допускается пуш коммитов любых авторов.
Чтобы отключить проверки для отдельных пользователей, добавьте их логины в массив superusers.