18.9. Создание общего репозитария CVS
Проблема
CVS хорошо подходит для отслеживания персональных файлов, но в реальном мире над проектами обычно одновременно работает много людей. Как создать репозиторий CVS, совместно используемый группой пользователей?
Решение
Сначала создайте владельца и группу, которым будет принадлежать репозиторий, а затем создайте сам репозиторий:
# groupadd cvsusers
# useradd -g cvsusers -u 105 cvs
# mkdir /cvsroot
# chown -R cvs /cvsroot
# chmod -R 770 /cvsroot
# cvs -d /cvsroot init
# chgrp cvsusers /cvsroot
# chmod g+s /cvsroot
Чтобы предоставить пользователям доступ к репозиторию, включите их в группу cvsusers
.
Любой пользователь из группы cvsusers
сможет импортировать проект в репозиторий. В следующем примере в репозиторий добавляется проект techbook
:
$ cd /techbook
$ cvs -d /cvsroot import techbook cupsjiowto version_1
Владельцами нового проекта являются пользователь, который его импортировал, и группа cvsusers
. Чтобы проверить, к какой группе и пользователю принадлежит проект, используйте команду:
$ stat /cvsroot/techbook
File: 'techbook'
Size: 136 Blocks: 1 IO Block: 4096 directory
Device: 306h/774d Inode: 69624 Links: 2
Access: (2775/drwxrwsr-x) Uid: ( 1000/ carla) Gid: (1005/ cvsusers)
Комментарий
Команды, приведённые выше, должны выполняться на сервере CVS. О работе с временным каталогом рассказывается в разделе 18.11. Очень важно соблюдать указанную последовательность команд для корректного назначения полномочий. Команда cvs init
создаёт набор административных файлов с установленными правами доступа, которые не следует изменять вручную (вы можете просмотреть их в подкаталоге CVSROOT
).
При создании системного пользователя (демона) не забудьте назначить соответствующий код UID (подробнее об этом см. в разделе 8.2). Важно задать маску umask
, равную 007
, для всех пользователей, чтобы предотвратить несанкционированный доступ к файлам в репозитории. Для этого добавьте следующую строку в файл ~/.bashrc
каждого пользователя:
umask 007
Установка бита закрепления (sticky bit) также помогает ограничить возможность переименования или удаления файлов в репозитории, позволяя выполнять эти действия только владельцу, группе или суперпользователю. Чтобы активировать этот бит, выполните команду:
# chmod +t /cvsroot
Общедоступный репозиторий CVS обеспечивает простоту управления проектами и удобный контроль версий, особенно когда над одним проектом работает несколько разработчиков. Поддерживая соответствующую структуру прав доступа и следуя рекомендациям по безопасности, вы обеспечите защиту важных данных, а команда сможет эффективно управлять репозиторием, получая своевременные обновления и отслеживая изменения.
CVS может быть установлен на большинстве Linux-дистрибутивов, и его настройка занимает минимум времени, если соблюдать последовательность команд и знать базовые принципы работы с пользователями и группами. Поддержка надежного уровня безопасности позволит снизить риск случайного изменения или удаления файлов.
См. также
Локальная документация (/usr/share/doc/cvs/html-info/cvs-2.html); домашняя страница CVS (https://www.cvshome.org).