У меня есть собственный собственный git-сервер, и у меня есть команда из 5 человек. У меня есть все учетные записи пользователей, но как я могу предотвратить фиксацию удаленной записи случайными странными учетными записями. Потому что некоторые из моей команды также используют github и не хотят, чтобы их имена пользователей появлялись в журнале, а скорее их имя пользователя, которое я им назначил.Предотвращение других авторов git
ответ
Чтобы предотвратить людей, совершающих использование «случайных странных учетных записей», вы можете настроить крючок git pre-receive
для проверки имен коммитеров/авторов при входящих коммитах на список допустимых имен. Но это не обеспечивает компонент аутентификации.
Чтобы избежать олицетворения, вы могли просто потребовать, чтобы все сообщения были подписаны с помощью gpg (git commit -S ...
), и у вас есть pre-receive
hook, проверяющий подписи против gpg-ключа на сервере.
В зависимости от того, как люди подключаются к удаленному серверу, вы также можете явно сопоставить имя комминера/автора с именем пользователя, используемым для соединения, если у вас есть к нему доступ.
Update 1
Если коммиттеры подталкивают к серверу через SSH, то третий вариант выше, вероятно, самый простой. В файле .ssh/authorized_keys
, установить переменные окружения для каждого ключа, который идентифицирует пользователь:
environment="SSH_USER=lars" ssh-rsa ...
И тогда в вашем pre-receive
крючке, вы можете использовать это переменные окружения для поиска действительных имен/писем коммиттера против некоторой таблицы. Вы можете прочитать о pre-receive
крюки на странице githooks(5)
человека, они получают на стандартный ввод строки вида:
<oldrev> <newrev> <refname>
Вы можете получить имя фиксации из <newrev>
так:
commiter_name=$(git show -s --format='format:%cn' <newrev>)
и почта используя %ce
вместо %cn
.
Update 2
Или черт, просто забыть табличный поиск. В вашем .ssh/authorized_keys
файле:
environment="ALLOWED_NAME=Bob Jones",environment="[email protected]" ssh-rsa ...
И тогда в вашей предварительно получить крюк:
#!/bin/sh
while read oldrev newrev refname; do
cn=$(git show -s --format='format:%cn' $newrev)
ce=$(git show -s --format='format:%ce' $newrev)
[ "$cn" = "$ALLOWED_NAME" ] || {
echo "*** Inalid committer name"
exit 1
}
[ "$ce" = "$ALLOWED_EMAIL" ] || {
echo "*** Inalid committer email"
exit 1
}
done
И я думаю, что у вас есть то, что вы хотите.
Update 3
Вы могли бы сделать что-то подобное с использованием аутентификации HTTP , потому что в вашем pre-receive
сценария вы бы иметь доступ к переменным REMOTE_USER
среды, которая содержит имени аутентифицированного удаленного пользователя. Вам, вероятно, понадобится пойти с каким-то видом таблицы, чтобы получить значение утвержденных имен и адресов электронной почты.
Хорошо. Да, у меня есть настройка учетной записи linux для каждого коммиттера, как я могу проверить подписи gpg с их именем? И как выглядела бы пре-передача? И поскольку у меня есть довольно много репозиториев, мне бы пришлось сделать это для каждого репо? –
Я немного обновил ответ. Если вы решите пойти по пути 'gpg', это, вероятно, будет включать в себя' grep'ing вывод чего-то вроде 'git show -s -format = format: '' --show-signature
Я обновил его снова. Думаю, мне нравится это решение лучше. По крайней мере, проще реализовать. – larsks
- 1. Массовое переименование авторов Git?
- 2. Предотвращение перемещения пользователей с помощью скрытых авторов
- 3. Определение безопасности Javascript других авторов, пример
- 4. Git обвинить список авторов в файле
- 5. Git commit, который не отменяет оригинальных авторов в git-вине
- 6. Предотвращение выписки в Git
- 7. несколько авторов или авторов в schema.org
- 8. Предотвращение удаления Git/Github кода
- 9. Предотвращение случайного клона Git происхождения
- 10. Удобный скрипт для переименования авторов фиксации с веткой git-filter
- 11. Как использовать git .mailmap для отображения организаций авторов?
- 12. Как получить всех авторов для текущего состояния git?
- 13. git shortlog для приложения facebook показывает неизвестных авторов
- 14. Как указать имена пользователей GitHub авторов с Git?
- 15. Предотвращение перемещения других divs на зависание
- 16. Предотвращение других приложения форма захвата экран/записи
- 17. Предотвращение перехода iAd из других представлений
- 18. Предотвращение использования приложений из других приложений
- 19. Предотвращение запуска других функций после выбранной функции
- 20. Предотвращение доступа других пользователей к сокету
- 21. Предотвращение подключения других приложений к вашему TcpListener
- 22. Предотвращение создания экземпляра класса из других классов
- 23. Wordpress: список авторов
- 24. Wordpress список авторов
- 25. гендерная классификация авторов блога
- 26. SQL SELECT несколько авторов?
- 27. Поиск ненадежных имен авторов
- 28. Analytics - Несколько авторов
- 29. unix pipe несколько авторов
- 30. GTM/UA Несколько авторов
Релевантно: http: // stackoverflow.com/q/117006/251311 – zerkms
Не то же самое ... Я в основном хочу какой-то метод проверки подлинности. Поэтому моя команда не может совершать как другие команды, просто перейдя git --config.name = "Test" –
@MaraisRossouw В этом случае вам придется использовать gerrit или gitlab или какой-либо другой инструмент. –