A hint on how to resurrect this if the subversion server would fail :)
git-svn-id: svn+ssh://svn.ipng.nl/usr/share/subversion/repositories/ircnet.ipng.ch@2 c5d60b8d-fdcb-4146-b734-af4215e9eb71
This commit is contained in:
198
README.svn
Normal file
198
README.svn
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
*******************************************************************
|
||||||
|
Setup Guide for Linux Subversion Server, using SSH client access
|
||||||
|
(using the svn+ssh protocol with svnserve -t)
|
||||||
|
|
||||||
|
Gunther Strube (gbs@users.sourceforge.net, March 2004)
|
||||||
|
*******************************************************************
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
0 Introduction
|
||||||
|
------------------------------------------------------------------
|
||||||
|
This Guide will explain in easy steps how to setup your Linux server
|
||||||
|
working for Subversion repository access through SSH client access.
|
||||||
|
|
||||||
|
The svn+ssh:// protocol enables you to use SSH client access is throught
|
||||||
|
the password prompt or using public private keys validation.
|
||||||
|
No Public/private key generation is necessary to use the simplified
|
||||||
|
svn+ssh protocol, but it might be a good idea, so that you can avoid
|
||||||
|
password prompts all the time when using the SVN client access.
|
||||||
|
|
||||||
|
This guide assumes that you know how to setup SSH with public/private
|
||||||
|
keys on the server and on your client, and that you already have
|
||||||
|
installed Subversion on your Linux box.
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
1. Install OpenSSH and Subversion binaries (distribution dependend)
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Install your binaries on the Linux server (rpm, tgz), following your
|
||||||
|
distributions installation scheme. To get SSH access working you need
|
||||||
|
to install the OpenSSH server package.
|
||||||
|
|
||||||
|
Also remember:
|
||||||
|
|
||||||
|
root user must NOT be allowed to use SSH access (usually default).
|
||||||
|
Make sure that the SSH server is being started at boot (init-scripts)
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
2. Access restrictions to Subversion repositories
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Using SSH in par with Subversion will only enable access to the
|
||||||
|
Subversion repositories to users created and active on the server.
|
||||||
|
To further restrict security, only those users (and root) can "work"
|
||||||
|
on those files (as created by svnadmin), if logged on to the system
|
||||||
|
(using the secure shell).
|
||||||
|
|
||||||
|
To ensure a clean interface, a new group is created, called svnusers.
|
||||||
|
Add users to this group that wants access to Subversion repositories.
|
||||||
|
(Use your favorite GUI admin tool or the command line)
|
||||||
|
|
||||||
|
All Subversion users should not be able to su to root (again for
|
||||||
|
sake of security, compromising remote login and hacking the root password)
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
2.1 Default umask for Subversion users
|
||||||
|
------------------------------------------------------------------
|
||||||
|
When each Subversion user accesses the reposity database through SSH
|
||||||
|
it is vital that the corresping user doesn't destroy the group write
|
||||||
|
permission during the SSH session (using the tunnelled svnserve command)
|
||||||
|
Therefore, all Subversion users need an addition to their .bashrc file:
|
||||||
|
|
||||||
|
umask 002 # allow user + group to write, no other.
|
||||||
|
|
||||||
|
Please remember this also when creating new users (that needs Subversion
|
||||||
|
access) on the server.
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
2.2 Create a svnadm user account
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Create this user with your favorite GUI tool or adduser command, and
|
||||||
|
add it to the svnusers group.
|
||||||
|
|
||||||
|
This user is only for keeping a proper abstraction when working
|
||||||
|
on the server. The svnadm user will of course be part of the
|
||||||
|
svnusers group. This user should be used to create new Subversion
|
||||||
|
projects, execute backup scripts, and work on general maintainance.
|
||||||
|
|
||||||
|
As with all Subversion users, the additional entry to the .bashrc file:
|
||||||
|
|
||||||
|
umask 002 # allow user + group to write, no other.
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
3. Create a root path for the Subversion repositories
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Create a path in where we will next create our Subversion
|
||||||
|
repositories (as root):
|
||||||
|
|
||||||
|
mkdir -p /usr/share/subversion/repositories
|
||||||
|
|
||||||
|
Next, we will restrict access to this area only for root and svn users:
|
||||||
|
|
||||||
|
chown -R root.svnusers /usr/share/subversion/repositories
|
||||||
|
chmod -R u+wrx,g+wrx,o-wxr /usr/share/subversion/repositories
|
||||||
|
|
||||||
|
Make sure that you have read and execute permission for root and svnusers
|
||||||
|
users in the above directory path (check all nodes of the path).
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
4. Creating a wrapper script for svnserve command
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Using the svn+ssh protocol unfortunately discloses the absolute
|
||||||
|
path of any Subversion project repository stored on the server's file
|
||||||
|
system. This is quite unfortunate due to security reasons. The purpose of
|
||||||
|
this wrapper script is to hide the root directory on your server where you
|
||||||
|
store all your Subversion repositories.
|
||||||
|
|
||||||
|
First of all, rename the original svnserve command into svnserve.bin
|
||||||
|
(it usually resides in /usr/bin/svnserve)
|
||||||
|
|
||||||
|
Paste the following text into your favorite Linux editor and change
|
||||||
|
the /path/to/repository/root to something useful, eg.:
|
||||||
|
/usr/share/subversion/repositories
|
||||||
|
|
||||||
|
Save the file as "svnserve", being the root superuser.
|
||||||
|
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
#!/bin/sh
|
||||||
|
# wrap in order to put root in by default
|
||||||
|
# Script implemented by Adrian Robert <arobert@cogsci.ucsd.edu>
|
||||||
|
|
||||||
|
exec /usr/local/bin/svnserve.bin -r /path/to/repository/root "$@"
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The -r option ensures that all URL specified paths (only the
|
||||||
|
projects) will be appended to this root path. In other words this
|
||||||
|
setup ensures that you only get access to repository projects inside
|
||||||
|
the root path.
|
||||||
|
|
||||||
|
The wrapper script must be executable (and readable) by all.
|
||||||
|
Only root can write: chmod u+wrx,g+rx-w,o+xr-w svnserve
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
5. Creating a Subversion project repository
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Finally, we're ready to actually create a Subversion repository that
|
||||||
|
can be accessed through the svn+ssh protocol. Use svnadm to do the
|
||||||
|
job:
|
||||||
|
su - svnadm (log into svnadm user)
|
||||||
|
|
||||||
|
then use the svnadmin command to create a Subversion project:
|
||||||
|
|
||||||
|
svnadmin create /usr/share/subversion/repositories/project1
|
||||||
|
("project1" just being an example, choose your own name)
|
||||||
|
|
||||||
|
finally, we need to remove the "other user" access of the new folder
|
||||||
|
and contents (so that only svnusers have access):
|
||||||
|
|
||||||
|
chmod -R o-rwx /usr/share/subversion/repositories/project1
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
5.1 Configuration of the Subversion project
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Before we can open up for the world, we need to configure a few
|
||||||
|
access settings in the project repository; nobody gets access to the
|
||||||
|
repository, unless they are SSH authenticated (no anonymous access),
|
||||||
|
and that the repository is enabled for write access for SSH
|
||||||
|
authenticated users.
|
||||||
|
|
||||||
|
cd /usr/share/subversion/repositories/project1/conf
|
||||||
|
|
||||||
|
load the svnserve.conf into your favorite editor and add the following:
|
||||||
|
|
||||||
|
[general]
|
||||||
|
anon-access = none
|
||||||
|
auth-access = write
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
6. Testing SSH client access (on localhost)
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Log in to one of the svn users and try:
|
||||||
|
|
||||||
|
svn list svn+ssh://<user-id>@localhost/project1
|
||||||
|
|
||||||
|
you should be prompted for a password (and if that's successful),
|
||||||
|
you just return back to the command line (because the newly created
|
||||||
|
project is empty). This test ensures that the SSH server is running
|
||||||
|
and that the svnserve tunneling is working.
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
7. Congratulations!
|
||||||
|
------------------------------------------------------------------
|
||||||
|
You're now ready to play with Subversion on your remote clients, doing
|
||||||
|
all the fun stuff with sub-versioning! Read the Subversion manual
|
||||||
|
thoroughly and understand the concepts before going into hard core
|
||||||
|
commit-mania!
|
||||||
|
|
||||||
|
One advice; use SSH Public/private keys with a user-agent to cache your
|
||||||
|
ssh passphrase otherwise you will get nuts typing your password over
|
||||||
|
and over again when issuing all those ssh command sessions.
|
||||||
|
|
||||||
|
There's a quick soultion if you're a TortoiseSVN user on Windows:
|
||||||
|
|
||||||
|
Open Explorer file window, right-click in the file section (get a pop-up),
|
||||||
|
choose: TortoiseSVN -> Settings -> "Network" Pane-> SSH Client.
|
||||||
|
|
||||||
|
...\TortoisePlink.exe -l SSH_login_user_id -pw SSH_password
|
||||||
|
|
||||||
|
(if you specify a user ID here, then remember to remove the user ID
|
||||||
|
from the svn+ssh URL)
|
||||||
|
|
Reference in New Issue
Block a user