Я настраиваю сервер Mac OSX 1.6 для размещения репозиториев Git. Таким образом, нам нужно отправлять коммиты на сервер через SSH.
Сервер имеет только учетную запись администратора и использует список пользователей с сервера LDAP.
Теперь, поскольку он обращается к серверу через неинтерактивную оболочку, операции git не могут быть завершены, поскольку исполняемые файлы git не находятся в пути по умолчанию.
Поскольку пользователи являются пользователями сети, у них нет локальной домашней папки. Поэтому я не могу использовать ~ / .bashrc и подобные решения.
Я просмотрел несколько статей здесь и там, но не смог заставить его работать в красивой и чистой настройке.
Вот информация о методах, которые я собрал до сих пор:
Я мог бы обновить среду PATH по умолчанию, включив в нее папку исполняемых файлов git. Однако мне не удалось это сделать успешно. Обновление / etc / paths ничего не изменило, и, поскольку это не интерактивная оболочка, / etc / profile и / etc / bashrc игнорируются.
Из справочной страницы ssh я прочитал, что переменная BASH_ENV может быть установлена для выполнения необязательного сценария. Однако я не могу понять, как настроить его на сервере. Если его необходимо настроить на клиентском компьютере, это неприемлемое решение. Если у кого-то есть информация о том, как это должно быть сделано, пожалуйста, непременно!
Я могу решить эту проблему, создав .bashrc с исправлением PATH в корне системы (поскольку все пользователи сети будут начинать здесь, поскольку у них нет дома). Но это просто неправильно. Кроме того, если мы создадим домашнюю папку для пользователя, команда git снова завершится ошибкой.
Я могу установить стороннее приложение для настройки ловушек при входе в систему, а затем запустить сценарий, создающий домашний каталог с необходимыми исправлениями пути. Это пахнет мастикой на заднем дворе и клейкой лентой.
Я могу установить небольшой скрипт на сервер и принудительно указать sshd для этого скрипта при входе в систему. Затем этот сценарий будет искать команду для выполнения ($ SSH_ORIGINAL_COMMAND) и запускать оболочку входа в систему для выполнения этой команды или просто запускать обычную оболочку входа в систему для интерактивного сеанса. Полную информацию об этом методе можно найти здесь: http://marc.info/?l=git&m=121378876831164
Последний - лучший метод, который я нашел до сих пор.
Есть предложения, как с этим справиться?
Вы смотрели на Гитозис или Гитолит? Оба позволяют упростить управление пользователями и ключами SSH для отправки коммитов, а также создание репозиториев.
Я использую Gitolite некоторое время и, вероятно, порекомендую его вместо Gitosis, так как он немного проще в установке и предлагает контроль разрешений для каждой ветки. Вы даже можете разделить конфигурацию на несколько файлов и делегировать ее.
(Извините, я новичок и могу опубликовать только одну ссылку.)
Добавить pam_env.so
в стек PAM для sshd и настройте его для добавления соответствующего каталога в $PATH
. Если OS X не имеет отдельного стека для sshd, его можно безопасно поместить в основной стек авторизации.