Я создал бы команду в sudoers файле и затем использовал бы sudo -u user-who-owns-svn-repo svn update
в Вашем Сценарии PHP.
Изменения в /etc/sudores
было бы подобно:
Cmnd_Alias SVN = /usr/local/bin/svn
apache ALL=(ALL,!root,!#0) NOPASSWD: SVN
См. руководство Sudoers для большего количества информации.
Если Вы хотите более трудные средства управления, сделайте сценарии оболочки, которые имеют определенные команды SVN и только предоставляют доступ Apache тем. Например:
Файл /path/to/my/project/update.sh
:
#!/bin/bash
svn update /path/to/my/project/svn-files
Файл /etc/sudores
:
Cmnd_Alias SVN = /path/to/my/project/update.sh
apache ALL=(ALL,!root,!#0) NOPASSWD: SVN
(и не забывайте chmod +x path/to/my/project/update.sh
)