Назад | Перейти на главную страницу

Subversion и mod_dav_svn: зачем делать www-data владельцем файлов вместо root?

Я установил выделенный сервер Subversion с Apache и mod_dav_svn на сервере Ubuntu 9.10, и на данный момент у меня все работает нормально. Однако я заметил, что когда дело доходит до назначения правильных прав доступа к файлам для каталога репозитория, в большинстве руководств вам предлагается сделать что-то вроде этого:

sudo chown -R www-data:www-data /svn/myrepo # make www-data the owner of the repo so Apache
                                            # can write to it
sudo chmod -R g+ws /svn/myrepo  # Give the www-data group write access as well, and enable
                                # setgid so that new directories have that group

Теперь я сделал это немного по-другому. Я создал новый subversion group и сделал его владельцем репозитория, затем добавил себя и www-data этой группе, поскольку я могу редактировать файлы конфигурации в /svn/myrepo/conf и скрипты хуков в /svn/myrepo/hooks, и он также немного отделяет Apache и Subversion друг от друга. Я видел, как другие учебники рекомендуют нечто подобное, но затем советуют вам сделать это:

sudo chwown -R www-data:subversion /svn/myrepo
sudo chmod -R g+ws /svn/myrepo

Эти же уроки подразумевают, что вы создаете subversion группа специально для того, чтобы Subversion и Apache в основном были отделены друг от друга, так почему они разворачиваются и делают www-data владелец файлов? Есть ли веская причина сделать www-data вообще владелец файлов репозитория? Почему бы просто не сделать root владелец? Похоже на сохранение www-data поскольку владелец репозитория излишне привязывает Subversion к Apache. Есть ли веская причина заставить хозяина www-data вместо того root, пока группа все еще subversion?

Обычно вы не хотите, чтобы root был владельцем репозитория, потому что это означало бы, что apache (httpd) должен был запускаться от имени root для доступа к репозиторию svn, что обычно считается угрозой безопасности.

По моему опыту, вы в основном взаимодействуете с Subversion через apache. Поскольку это так, кажется проще и естественнее просто позволить apache (www-data) быть владельцем репозитория Subversion. Если вы создали репозиторий Subversion в структуре каталогов, отдельной от ваших веб-сайтов, не должно возникать путаницы в том, какие файлы для чего используются. Например, у меня есть / data / www для моих веб-сайтов и / data / svn для моих репозиториев svn.

Затем, чтобы позволить себе изменять файлы конфигурации репозитория и сценарии перехвата, просто сделайте себя членом группы www-data и выполните:

sudo chmod -R g+ws /svn/myrepo

как вы упомянули выше, и вам хорошо.

Я не вижу преимуществ в отделении владельца репозитория svn от пользователя apache, но если вы действительно настаиваете на этом, вы можете создать пользователя subversion в дополнение к группе subversion и сделать так, чтобы владелец / svn / myrepo был subversion : subversion. Затем просто сделайте себя и apache членом группы subversion и измените права доступа к каталогу, как указано выше.

IIRC, Apache нужен только доступ на запись к каталогам «dav», «db» и «locks». Не имеет значения, принадлежит ли это пользователю или группе. В большинстве случаев у Apache нет причин иметь доступ для записи в "conf" и "hooks".