Я пытаюсь настроить перехват git post-receive таким образом, чтобы при получении коммита обновлялся еще один клон хранилища на машине (т. Е. Делает git pull origin master
). Я использую Gitosis для обслуживания хранилища, и поэтому я считаю, что хук после получения будет запускаться от имени пользователя gitosis
, тогда как хранилище, которое я хочу обновить при получении, принадлежит www-data
. Как мне это сделать?
Я слышал о setuid
скриптах, но я не уверен, может ли это быть угрозой безопасности? И если это не угроза безопасности, как бы я поступил так? Я предполагаю, что я бы сделал что-то вроде создания сценария, принадлежащего www-data
, и сделал бы его исполняемым во всем мире и включил бы бит setuid? Я полагаю, что этот сценарий был бы в значительной степени безвредным, поскольку все, что он делает, это обновляет хранилище, но я хочу быть уверен. Спасибо!
Редактировать: Есть ли способ сделать это с помощью sudo
? Будет ли это безопаснее, чем setuid
? Я имею в виду, я не думаю, что есть большая проблема с setuid
, если пользователь не является пользователем root, но все равно кажется, что мне придется перепрыгнуть через несколько обручей, чтобы запустить скрипт setuid
.
Второе редактирование: кажется, что я мог бы быть в состоянии сделать это с некоторой магией /etc/sudoers
и sudo -u
. Возможно, мне следовало бы опубликовать это вместо ServerFault, но, по крайней мере, я немного узнал об этом.