Рассмотрите сервер, который размещает несколько репозиториев Мерзавца:
$ ls -l /opt/git/
drwxrwxr-x 7 ubuntu root 4096 Jan 2 2014 george.git
drwxrwxr-x 7 ubuntu root 4096 Dec 29 2013 john.git
drwxrwsr-x 7 ubuntu root 4096 Jul 4 2013 paul.git
drwxrwsr-x 7 ubuntu root 4096 Jun 30 2013 ringo.git
До сих пор у всех разработчиков был доступ ко всему Мерзавцу repos через SSH. Я теперь добавляю dev, у кого должен только быть доступ к john.git
repo. Я создал пользователя Linux yoko
но я не уверен, как я должен позволить yoko
получите доступ /opt/git/john.git
каталог самым безопасным способом, не позволяя ему получить доступ к другим каталогам в /opt/git/
.
Каков канонический способ ограничить доступ как таковой?
Мой наклон состоит в том, чтобы сделать john.git
как группа foobar
и добавьте ту группу к пользователю yoko
группы. Однако, что происходит, если я позже должен добавить другого пользователя, который мог бы получить доступ к двум repos? Например, я мог бы хотеть добавить пользователя cynthia
с доступом к обоим john.git
и к paul.git
. У меня должна быть отдельная группа для каждого Мерзавца repo? Я видел что, становясь громоздким очень быстро
Обратите внимание, что у этих пользователей должен быть доступ ни к чему кроме их собственного /home/user/
каталоги и дополнительно Мерзавцу repo (s), что им разрешают. Если существует путь к символьной ссылке т.е. /home/yoko/john.git
кому: /opt/git/john.git
способом это предотвращает доступ к остальной части /opt/git/
это было бы лучшим, однако я, может казаться, не настраиваю систему как таковую.
Сервер выполняет Сервер Ubuntu 12.04, но я мог возможно обновить его к 14,04, если существует потребность. Пользователи соединяются через SSH, использующий ключи RSA, никакой пароль. Они будут работать git pull
и git push
на сервере, ничто больше.
Для небольшого количества репозиториев групповой подход работает просто отлично. Да, каждому репо потенциально нужна своя группа, и оно становится громоздким, если у вас больше репозитория. Как упоминалось в комментариях @AlexeyTen, если у вас больше репозиториев, или вам нужен более "высокоуровневый" интерфейс управления, вам следует обратить внимание на менеджер репо, такой как gitolite или gitlab. Gitolite управляется через текстовые файлы в git-репо (конфигурационные файлы и SSH-ключи фиксируются для специального git-репо и нажимаются, и всё настраивается). С другой стороны, Gitlab - это веб-приложение "всё-в-одном", похожее по концепции на самохостинг Github. Если вам не нужны все колокольчики и свистки, гитолит почти наверняка отлично справится со своей задачей
.