18.14. Построение анонимного репозитария CVS

Проблема
Требуется создать общедоступный репозитарий CVS, чтобы любой желающий мог
загрузить хранящуюся в нем информацию, но при этом анонимным пользовате лям должен быть разрешен доступ только к подкаталогам, но не к вышестоящим
каталогам; также им должно быть разрешено только чтение оглавления каталога
и файлов в нем, но не запись.
Решение
Настройте CVS Pserver. Вам понадобится cvsd, рабочий сервер CVS и OpenSSH
на сервере CVS в режиме демона.
Программа cvsd — дополнение для запуска CVS в режиме Pserver — существу ет в тестовой версии для Debian, а также в виде tar-архива с исходными текстами.
На момент написания книги единственные доступные пакеты RPM были слиш ком старыми (версия .6-2). Раздел написан для версии 1.0.2, так что если вам не
удастся найти более новый пакет RPM, постройте программу по исходным тек стам. Исходные тексты (а также файлы .deb) можно загрузить с домашней стра ницы 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
Затем создайте корневой каталог репозитария и «песочницу»1 (подкаталог пу стого каталога):
# 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;
chroot jail. — Примеч. ред.
О 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 (создай те в файле отдельную строку, состоящую из слова «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
He создавайте пароль; просто нажимайте Enter, пока запрос не исчезнет. Те перь запустите cvsd и подключитесь как обычный пользователь:
# /etc/init.d/cvsd start
$ cvs -d:pserver:guest:@localhost:/home login
Logging in to :pserver:guest@localhost:2401/home
Если после guest следует двоеточие, команда не будет запрашивать пустой па роль. Помните, что вместо /cvs/home следует указывать /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).