Git shell not enabled?
I'm trying to install git server. When I set default shell for my git user to /usr/bin/git-shell I get an error upon login as git.
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Ssh key based access work, permissions are set correctly.
Google search does not show anything regarding this error.
I also used this method in past installations and no such error was shown. Also I looked at working server if it has some extra files or config but no such thing.
System spec:
- Gentoo linux (latest)
- Git 1.7.5.3
/etc/passwd line:
git:x:1002:1004::/home/git:/usr/bin/git-shell
Solution 1:
I found this after running locate git-shell-commands
cat /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands/README
Sample programs callable through git-shell. Place a directory named 'git-shell-commands' in the home directory of a user whose shell is git-shell. Then anyone logging in as that user will be able to run executables in the 'git-shell-commands' directory.
Provided commands:
help: Prints out the names of available commands. When run interactively, git-shell will automatically run 'help' on startup, provided it exists.
list: Displays any bare repository whose name ends with ".git" under user's home directory. No other git repositories are visible, although they might be clonable through git-shell. 'list' is designed to minimize the number of calls to git that must be made in finding available repositories; if your setup has additional repositories that should be user-discoverable, you may wish to modify 'list' accordingly.
So I ran the following commands as 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
I was then able to run the following as the git
user:
[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
Now I don't see what good help and list are, but the login worked. :)
Solution 2:
i just had to do # mkdir ~git/git-shell-commands
then su git
worked for git 1.8.1.5-r1
Solution 3:
If you look at the code which triggers that error message (which seems to have been different in older versions of 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.");
this should be a right issue on the git-shell directory.
The user must have read and execute permissions to the directory in order to execute the programs in it.