Я це виявив після бігу locate git-shell-commands
cat /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands/README
Зразкові програми, які можна дзвонити через git-shell. Помістіть каталог з назвою 'git-shell-command' у домашній каталог користувача, оболонкою якого є git-shell. Тоді кожен, хто ввійде в систему як цей користувач, зможе запускати виконувані файли в каталозі 'git-shell-command'.
Надані команди:
довідка: друкує назви доступних команд. При інтерактивному запуску, 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
Зараз я не бачу, яка корисна допомога та список, але логін спрацював. :)
git-shell
- обмежена оболонка, яка повинна використовуватися лише для функцій push / pull (тобтоgit push
,git fetch
іgit pull
). Це не призначено для інтерактивності, тому вам не слід входити в інтерактивну оболонку. Ви можете зробити його дещо інтерактивним, додавшиgit-shell-commands
каталог у домашньому користувачеві та позначивши деякі бінарні файли всередині. Але це дуже обмежено (наприклад, немає бінарногоcd
файлу), тому кращою альтернативою є увійти якroot
абоsudo
здатний користувач і зробити,sudo -u git -s
щоб отримати повнуbash
оболонку підgit
користувачем.