18.14. Построение анонимного репозитория CVS
Проблема
Требуется создать общедоступный репозиторий CVS, чтобы любой желающий мог загрузить хранящуюся в нём информацию. При этом анонимным пользователям должен быть разрешён доступ только к подкаталогам (не выше), с возможностью только чтения содержимого каталогов и файлов, но не записи.
Решение
Настройте CVS Pserver
. Вам потребуется cvsd
, рабочий сервер CVS и OpenSSH для работы сервера CVS в режиме демона. Программа cvsd
— это дополнение для запуска CVS в режиме Pserver. Она доступна для Debian в тестовой версии и как tar-архив с исходными текстами. Единственные доступные пакеты RPM на момент написания слишком устарели (версия 0.6-2). Этот раздел предназначен для версии 1.0.2. Если не удаётся найти более новый пакет RPM, собирайте cvsd
по исходным текстам. Исходные тексты можно загрузить с [домашней страницы cvsd](http://tiefighter.et.tude.nl/~arthur/cvsd).
Установка по исходным текстам:
$ ./configure --prefix=/usr --sysconfdir=/etc
# make install
Создайте пользователя и группу cvsd
:
# groupadd cvsd
# useradd -d /cvs/home -s /bin/false -c "cvs pserver daemon" -g cvsd -u 110 cvsd
Далее создайте корневой каталог репозитория и «песочницу» (подкаталог пустого каталога):
# mkdir /cvs
# cd /cvs
# cvsd-buildroot /cvs
Назначьте владельцем пользователя и группу cvsd
и задайте соответствующие разрешения:
# chown -R cvsd:cvsd /cvs
# chmod 775 /cvs
Инициализируйте новый репозиторий cvsd
:
# cvs -d /cvs/home init
Внесите изменения в файл /etc/cvsd/cvsd.conf
:
- UID - cvsd;
- GID - cvsd;
- Umask - 027;
- RootJail — корневой каталог репозитория CVS (в нашем примере
/cvs
); - Repos — обновите одну из записей, указав новый корневой каталог репозитория
/home
.
Откройте анонимный доступ к репозиторию. Создайте с правами root
каталог «песочницу» и выполните команду checkout
для каталога CVSROOT
:
# mkdir /sandbox
# cd /sandbox
# cvs -d /cvs/home checkout CVSROOT
# cd CVSROOT
Создайте файл CVSROOT/readers
и добавьте пользователя guest
(запишите его имя на отдельной строке). Убедитесь, что файл заканчивается парой пустых строк. Затем добавьте файл в репозиторий командами add
и update
:
# cvs -d /cvs/home update
# cvs -d /cvs/home add readers
# cd /sandbox
# cvs -d /cvs/home commit -m 'pserver guest access' CVSROOT/readers
Наконец, назначьте пользователю guest
пустой пароль:
# cvsd-passwd /cvs/home guest
При запросе пароля просто нажимайте Enter
, пока запрос не исчезнет. Теперь запустите cvsd
и подключитесь как обычный пользователь:
# /etc/init.d/cvsd start
$ cvs -d:pserver:guest:@localhost:/home login
Logging in to :pserver:guest@localhost:2401/home
При использовании двоеточия после guest
команда не будет запрашивать пустой пароль. Используйте /home
вместо /cvs/home
.
Комментарий
Для корректного назначения прав доступа очень важно выполнить все действия в указанном порядке. cvsd
должна обладать правами на файловую систему внутри /cvs
, но не на каталог CVSROOT
.
Новый общедоступный репозиторий заполняется обычным способом. Включите в группу cvsd
авторизованных пользователей, которым разрешено импортировать файлы локально или через SSH.
Не используйте CVS Pserver
для других целей, кроме анонимного общего доступа, и не разрешайте заносить файлы через Pserver, поскольку аутентификация проводится в простом текстовом формате. Чтобы исключить запись через Pserver, создайте пустой файл CVSROOT/writers
.
См. также
Файлы Readme и FAQ в архиве исходных текстов; [домашняя страница cvsd](http://tiefighter.et.tude.nl/~arthur/cvsd); [домашняя страница CVS](https://www.cvshome.org).