Существует 2 типа решений для такого рода проблем: опрос или управление событиями.
Примером решения с опросом может быть выполнение cronjob на вашем сервере, которое обновляется каждые N минут.Это, вероятно, будет проще всего поддерживать, если это работает для вас.Вы можете обойти всю проблему с разрешениями, запустив cron из правильной учетной записи.
Решение, которое вы рассмотрели, является решением, управляемым событиями.Обычно они менее ресурсоемки, но их сложнее настроить.Другим примером решения, управляемого событиями, было бы включение www-данных в группу svn.Установите бит SGID и выберите каталог хранилища для группы svn.Это должно позволить любому в этой группе регистрироваться / выходить.
Если вам нужно ограничиться обновлением, вы можете повысить привилегии или временно сменить пользователя.Вы используете одноразовые ssh-ключи (также называемые клавишами команд) для ssh-входа как пользователь с правильными привилегиями.Затем для обновления можно использовать один ключ назначения.
Другим способом повышения привилегий является использование sudo -u [user] [command]
.Обновите файл /etc/sudoers
, чтобы разрешить www-данным расширять / изменять пользователя на тот, который может выполнить обновление.
В любом случае я бы НЕ использовал сценарии SUID / SGID.