Вопрос: как вы редактируете, как git вызывает ловушку?
TL; DR - безопасность моей хостинг-платформы странная, и мне нужно выяснить, как отредактировать, как git вызывает перехватчик post-receive.
Я пытаюсь настроить автоматическое развертывание через GIT, но в основном люди предлагают это сделать с помощью сценария после получения. Если я вставлю крючки и сделаю
$ sh post-receive
, он работает нормально, но если я
$ ./post-receive
, он будет жаловаться на разрешения, хотя у него
$ chmod 777 post-receive
(что вы можете проверить с помощью $ ls -l).
Вот сообщение, которое я получил от службы поддержки: «Причина в том, что среда SSH смонтирована как неисполняемая среда по соображениям безопасности. Это означает, что вы не можете запускать сценарии только по пути.
Например, running: /www/repos/webprosjekt18.git/hooks/post-receive не будет работать, это выдаст ошибку разрешения.
Запуск: bash /www/repos/webprosjekt18.git/hooks/post-receive будет работать нормально (в зависимости от того, что этот скрипт делает изc, но он, по крайней мере, запустит файл).
Мы думаем, что git по умолчанию запускает хуки, вызывая: /www/repos/webprosjekt18.git/hooks/post-receive, что не сработает. "
удаленный скрипт:
mkdir repos
cd repos
git init --bare
cat > hooks/post-receive <<END
#!/bin/sh
echo "executing post-receive hook"
END
chmod 777 hooks/post-receive
cd hooks
sh post-receive
bash
из оболочки, которую вы получите, войдя в систему с помощью ssh. По-прежнему не можете выполнять сценарии? (Это влияет только на сценарии?) Что если вы сделаетеPATH=$PATH:.
, чтобы добавить текущий каталог вPATH
? - person sneep   schedule 22.03.2018/usr/bin/bash
(или любая другая оболочка, например/bin/sh
,tcsh
и т. Д.). Будут ли у итоговой оболочки такие же ограничения? 2) После входа через ssh попробуйте выполнитьPATH=$PATH:.
. Если вы сделаете это, вы сможете выполнять сценарии по текущему пути, выполняяscript.sh
, а не./script.sh
. Это работает? 3) Каков результатwhich bash
4) Выполняется ли _8 _ / _ 9_ при входе в систему? - person sneep   schedule 22.03.2018execve
s скрипты хуков. Я почти уверен, что есть способ обойти безопасность вашей хостинг-платформы. Например, работают ли двоичные исполняемые файлы? Если да, вы могли бы, например, используйте крошечную программу на C, напримерint main() { system("bash script.sh"); }
, в качестве ловушки. - person sneep   schedule 22.03.2018