Назад | Перейти на главную страницу

Оболочка Git не включена?

Я пытаюсь установить 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