나는 실행 후 이것을 발견 locate git-shell-commands
고양이 /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands/README
git-shell을 통해 호출 가능한 샘플 프로그램. 쉘이 git-shell 인 사용자의 홈 디렉토리에 'git-shell-commands'라는 디렉토리를 배치하십시오. 그런 다음 해당 사용자로 로그인하면 누구나 'git-shell-commands'디렉토리에서 실행 파일을 실행할 수 있습니다.
제공된 명령 :
help : 사용 가능한 명령의 이름을 인쇄합니다. 대화식으로 실행하면 git-shell은 시작시 자동으로 '도움말'을 실행합니다 (있는 경우).
list : 사용자의 홈 디렉토리에서 이름이 ".git"로 끝나는 기본 저장소를 표시합니다. 다른 자식 저장소는 보이지 않지만 git-shell을 통해 복제 할 수는 있습니다. 'list'는 사용 가능한 저장소를 찾는 데 필요한 git 호출 횟수를 최소화하도록 설계되었습니다. 설정에 사용자가 검색 할 수있는 추가 리포지토리가있는 경우 그에 따라 '목록'을 수정할 수 있습니다.
그래서 다음 명령을 루트로 실행했습니다.
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
이제 좋은 도움과 목록이 무엇인지 알지 못하지만 로그인이 작동했습니다. :)
git-shell
푸시 / 풀 기능에만 사용되는 제한된 쉘입니다 (예git push
:git fetch
및git pull
). 대화식이 아니므로 대화식 쉘에 로그인하지 않아야합니다.git-shell-commands
사용자의 집에 디렉토리를 추가하고 일부 바이너리를 심볼릭 링크 하여 대화식으로 만들 수 있습니다 . 그러나 매우 제한적cd
이므로 (예를 들어 바이너리가 없기 때문에) 더 나은 대안은 사용자root
또는sudo
유능한 사용자 로 로그인 하여 사용자 아래에sudo -u git -s
전체bash
셸 을 얻는 것git
입니다.