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).