У меня есть репозиторий git, размещенный на моем сервере SunOS, который я использую удаленно через ssh
git clone ssh://myUser@mydomain.com/path/to/git
Теперь мне нужно добавить больше пользователей, чтобы иметь доступ к этому репозиторию, но не знаю, как это сделать.
Я добавил один testUser в ssh, но я не могу ограничить эти права пользователя только использованием git.
testUser может использовать ssh и просматривать весь сервер.
Как я могу создать пользователей, которые могут получить доступ только к git удаленно, клонировать / тянуть / нажимать и т. Д.
Спасибо
В основном у вас есть два варианта.
Как упоминалось в topdog, когда вы создаете пользователей на сервере, установите для их оболочки значение git-shell (запись в книге здесь). Это позволит пользователю войти в систему через SSH, но вместо запуска обычной полнофункциональной оболочки (например, sh, bash и т. Д.) Он будет запускать git-shell, который обеспечивает доступ только к функциям git.
В качестве альтернативы вы можете сделать свои репозитории доступными через другой протокол, например TCP (используя мерзавец) или HTTP / HTTPS. Я бы рекомендовал такой сценарий только для доступа только для чтения.
Вы упомянули, что хотите поддерживать функцию «push» для ваших пользователей, поэтому вам действительно стоит выбрать вариант №1.
Вы можете подумать об использовании гитолит под одним пользователем вместо настройки нескольких git-shell пользователей (и требуемые разрешения группы и группы, чтобы они могли совместно использовать доступ к репозиториям).
гитолит работает под управлением одного обычного пользователя на сервере и использует открытые ключи SSH для разграничения доступа к репозиториям Git (см. «как гитолит использует ssh», Чтобы узнать, как гитолит выполняет идентификацию на основе SSH). гитолит предлагает для каждого репозитория, каждой ветки и даже некоторый контроль доступа для каждого пути.
вам нужно изменить их оболочку на git-shell, которая предоставит им доступ только к функциям git.
Другой способ сделать это - ограничить доступ пользователей в ssh.
(http://prefetch.net/blog/index.php/2006/09/05/limiting-access-to-openssh-directives/)
В примере используется только один пользователь, но если пользователи находятся в одной группе, вы можете отфильтровать их с помощью директивы group. Что-то вроде
AllowTcpForwarding yes
X11Forwarding yes
Match Group Users
AllowTcpForwarding no
X11Forwarding no
$Here is a directive for git$