Я пытаюсь установить git server. Когда я устанавливаю оболочку по умолчанию для моего пользователя git на / usr / bin / git-shell, я получаю сообщение об ошибке при входе в систему как git.
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Доступ по ssh-ключу работает, права установлены правильно.
Поиск Google ничего не показывает об этой ошибке.
Я также использовал этот метод в прошлых установках, и такой ошибки не было. Также я посмотрел на рабочий сервер, есть ли на нем какие-то дополнительные файлы или конфигурация, но их нет.
Спецификация системы:
Строка / etc / passwd:
git:x:1002:1004::/home/git:/usr/bin/git-shell
Я нашел это после запуска locate git-shell-commands
кот /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands/README
Примеры программ, вызываемые через git-shell. Поместите каталог с именем git-shell-commands в домашний каталог пользователя, оболочкой которого является git-shell. Тогда любой, кто войдет в систему как этот пользователь, сможет запускать исполняемые файлы в каталоге git-shell-commands.
Предоставляемые команды:
help: выводит имена доступных команд. При интерактивном запуске git-shell автоматически запускает «справку» при запуске, если она существует.
list: отображает любой пустой репозиторий, имя которого заканчивается на «.git» в домашнем каталоге пользователя. Никаких других репозиториев git не видно, хотя их можно клонировать через git-shell. 'list' предназначен для минимизации количества обращений к git, которые необходимо сделать для поиска доступных репозиториев; если в вашей установке есть дополнительные репозитории, которые должны быть доступны для обнаружения пользователем, вы можете соответствующим образом изменить «список».
Итак, я выполнил следующие команды как root:
cp /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands /home/git -R
chown git:developers /home/git/git-shell-commands/ -R
chmod +x /home/git/git-shell-commands/help
chmod +x /home/git/git-shell-commands/list
exit
Затем я смог запустить следующее в качестве git
пользователь:
[me@svn ~]$ su git
Password:
Run 'help' for help, or 'exit' to leave. Available commands:
list
git> help
Run 'help' for help, or 'exit' to leave. Available commands:
list
git> list
git> exit
Сейчас я не вижу, что такое хороший справочник и список, но логин работал. :)
мне просто нужно было сделать # mkdir ~git/git-shell-commands
затем su git
работал для git 1.8.1.5-r1
если ты посмотри на код которое вызывает это сообщение об ошибке (которое кажется, было иначе в старых версиях Git):
if (access(COMMAND_DIR, R_OK | X_OK) == -1) {
die("Interactive git shell is not enabled.\n"
"hint: ~/" COMMAND_DIR " should exist "
"and have read and execute access.");
это должно быть правильной проблемой в каталоге git-shell.
Пользователь должен иметь разрешения на чтение и выполнение в каталоге, чтобы запускать в нем программы.
Примените эти две команды, чтобы решить эту проблему:
Чтобы включить git-shell для your_git_user:
usermod -s / usr / bin / git-shell ваш_git_user
Чтобы рекурсивно изменить владельца каталога your_git_user:
chown -R ваш_git_user: your_users_group / home / your_git_user
Вы можете добавить команды оболочки git, используя команду ниже:
cp /usr/share/doc/git-1.8.3.1/contrib/git-shell-commands/ / home / your_git_user / git-shell-commands -R