この節では Subversion サーバーの構築、および安全な管理方法などについて説明します。
これ以降では Subversion サーバーのインストール手順を示します。 OpenSSH を利用すれば、セキュアなリモートアクセスを実現することもできます。 ここでは svnserve により匿名 (anonymous) アクセスを行うものとします。
Subversion サーバーの設定は、以下に示す手順により実施します。
設定を行うには、まずは root
ユーザーになって操作します。
以下のコマンドを実行して svn
ユーザーおよびグループを生成します。
groupadd -g 56 svn && useradd -c "SVN Owner" -d /home/svn -m -g svn -s /bin/false -u 56 svn
複数のリポジトリを利用するなら、それらのリポジトリを取り扱うグループを1つ作っておけば、管理が容易になります。
以下のコマンドにより、テストリポジトリを取り扱う svntest
グループを生成します。 そして svn
ユーザーをそのグループに加えます。
groupadd -g 57 svntest && usermod -G svntest -a svn
さらに新しいファイルへの書き込み権限を与えるには、所有者とそのグループがリポジトリを取り扱えるものとしなければならず、 umask 002 を実行する必要があります。 svn と svnserve に対して、ラッパースクリプトを生成することで、これを確実に実現します。
mv /usr/bin/svn /usr/bin/svn.orig && mv /usr/bin/svnserve /usr/bin/svnserve.orig && cat >> /usr/bin/svn << "EOF"#!/bin/sh umask 002 /usr/bin/svn.orig "$@"
EOF cat >> /usr/bin/svnserve << "EOF"#!/bin/sh umask 002 /usr/bin/svnserve.orig "$@"
EOF chmod 0755 /usr/bin/svn{,serve}
Apache を使ってリポジトリに対し HTTP 経由でのアクセスを行う場合、特に匿名アクセスも可能とする場合、 /usr/sbin/httpd コマンドに対して、上と同様のラップスクリプトを生成する必要があります。
There are several ways to set up a subversion repository. It is recommended to have a look at the SVN Book corresponding chapter. A basic repository can be set up with the instructions below.
Subversion の新たなリポジトリは
(root
となって) 以下のコマンドにより生成します。
install -v -m 0755 -d /srv/svn && install -v -m 0755 -o svn -g svn -d /srv/svn/repositories && svnadmin create /srv/svn/repositories/svntest
Now that the repository is created, it should be populated with
something useful. You'll need to have a predefined directory
layout set up exactly as you want your repository to look. For
example, here is a sample BLFS layout setup with a root of
svntest/
. You'll need to set up a
directory tree similar to the following:
svntest/ # The name of the repository
trunk/ # Contains the existing source tree
BOOK/
bootscripts/
edguide/
patches/
scripts/
branches/ # Needed for additional branches
tags/ # Needed for tagging release points
上に示したようなディレクトリレイアウトに基づいてディレクトリを生成したら、初期インポートを行います。
svn import -m "Initial import." \
</path/to/source/tree>
\
file:///srv/svn/repositories/svntest
リポジトリに対して、ユーザーとグループの所有を設定します。 そして一般ユーザーに対して svn
と svntest
のグループへの設定を行います。
chown -R svn:svntest /srv/svn/repositories/svntest &&
chmod -R g+w /srv/svn/repositories/svntest &&
chmod g+s /srv/svn/repositories/svntest/db &&
usermod -G svn,svntest -a <username>
svntest
は svntest
リポジトリに割り当てるグループです。 As mentioned earlier, this eases
administration of multiple repositories when using OpenSSH for authentication. Going forward,
you'll need to add your unprivileged user, and any additional
users that you wish to have write access to the repository, to
the svn
and svntest
groups.
In addition, you'll notice that the new repository's db
directory is set-groupID. If the reasoning
is not immediately obvious, when using any external
authentication method (such as ssh), the sticky bit is set so
that all new files will be owned by the user, but group of
svntest
. Anyone in the
svntest
group can create files,
but still give the entire group write access to those files. This
avoids locking out other users from the repository.
一般ユーザーに戻って、新たなリポジトリを参照するために svnlook コマンドを実行します。
svnlook tree /srv/svn/repositories/svntest/
You may need to log out and back in again to refresh your group
memberships. su <username>
should work as well.
As mentioned previously, these instructions will configure the server to use only ssh for write access to the repository and to provide anonymous access using svnserve. There are several other ways to provide access to the repository. These additional configurations are best explained at https://svnbook.red-bean.com/.
Access configuration needs to be done for each repository. Create
the svnserve.conf
file for the
svntest repository using the following commands:
cp /srv/svn/repositories/svntest/conf/svnserve.conf \
/srv/svn/repositories/svntest/conf/svnserve.conf.default &&
cat > /srv/svn/repositories/svntest/conf/svnserve.conf << "EOF"
[general]
anon-access = read
auth-access = write
EOF
There is not a lot to the configuration file at all. You'll
notice that only the general section is required. Take a look at
the svnserve.conf.default
file for
information on using svnserve's built-in
authentication method.
To start the server at boot time, install the svn bootscript included in the blfs-bootscripts-20231119 package:
make install-svn