We've been using subversion for version control for our software projects for quite a while now. Since we develop in python, I've recently started using subversion to deploy working copies of the sites. When a site is updated in the repo, a post-commit hook is called on the server and it pushes the changes to the live sites.
Continuing in this vein, I've seen references to other people using version control for their server configuration scripts. We're running Ubuntu 9.04, and I can imagine the utility of having (for example) all of /etc/ versioned so that if I screw up an apache configuration, or install something that hoses some existing configuration, I could simply restore from backup.
My question (and concern) is that currently, all our developers have access to all our subversion repository. If I'm starting to put sensitive system configuration in there, I think it would make sense to restrict access, but I don't know how to do this. Once I have all the files in the repo, how should I manage checkout and checkin? Make changes locally then push to the server? Modify the server and then push to the repo? Our subversion server is a different physical machine, so I can't use local file checkout. How should I handle the security for that? Passwordless SSH?
Also, what other security concerns should I be aware of in a situation like this? I know that a lot of information is stored in the .svn directory, will I be exposing my server to compromise with something like this? Is subversion itself inherently secure enough to make this feasible?
Also, does subversion properly save and restore file ownership and permissions?