Во-первых, вы, вероятно, хотите усилить права доступа к каталогам `$CVSROOT' и `$CVSROOT/CVSROOT'. See section Прямое соединение с парольной аутентификацией, где описаны детали.
На стороне сервера следует редактировать файл
`/etc/inetd.conf', чтобы inetd знал, что следует
выполнять команду cvs pserver, когда кто-либо пытается
соединиться с соответствующим портом. По умолчанию номер порта
--- 2401; это значение можно изменить, если перед компиляцией
установить параметр CVS_AUTH_PORT в другое значение.
Если ваш inetd позволяет использование номеров портов в
`/etc/inetd.conf', то можно использовать такую строку
(отформатировано, чтобы влезло на страницу):
2401 stream tcp nowait root /usr/local/bin/cvs cvs -f --allow-root=/usr/cvsroot pserver
Вы можете также использовать ключ командной строки `-T', чтобы указать временный каталог.
Ключ командной строки `--allow-root'
Если ваш inetd требует текстовых имен сервисов вместо
номеров портов, поместите эту строчку в `/etc/services':
cvspserver 2401/tcp
и напишите cvspserver вместо 2401 в файле
`/etc/inetd.conf'.
После всего этого перезапустите inetd или заставьте его
перечитать файлы конфигурации. В случае проблем с настройкой
смотрите section Ошибки при установке соединения с CVS-сервером.
Так как клиент хранит и пересылает пароли практически открытым тестом (See section Прямое соединение с парольной аутентификацией, где описаны детали), то может использоваться отдельный файл паролей для CVS, чтобы пользователи не раскрывали своих обычных паролей при доступе к репозиторию. Этот файл -- `$CVSROOT/CVSROOT/passwd' (see section Административные файлы). В этом файле используется обычный формат строк, разделенных двоеточиями, типа того, что используется в файле `/etc/passwd' в Unix-системах. В этом файле несколько полей: имя пользователя CVS, необязательный пароль и необязательное имя системного пользователя, на правах которого будет работать CVS после успешной аутентификации. Вот пример файла `passwd', в котором находится пять строк:
anonymous: bach:ULtgRLXo7NRxs spwang:1sOp854gDF3DY melissa:tGX1fS8sun6rY:pubcvs qproj:XR4EZcEs0szik:pubcvs
(Пароли шифруются стандартной функцией UNIX crypt(),
поэтому можно просто перенести пароль из обычного файла
`/etc/passwd'.
Первая строка в этом примере предоставляет доступ любому
CVS-клиенту, пытающемуся аутентифицироваться с именем
anonymous и любым паролем, включая пустой пароль. (Это
обычное решение для машин, предоставляющих анонимный доступ
только для чтения; информация о предоставлении доступа только для
чтения находится в See section Доступ к репозиторию только для чтения.
Вторая и третья строки предоставляют доступ пользователям
bach и spwang, если они знают соответствующий
пароль.
Четвертая строка предоставляет доступ пользователю
melissa, если она знает правильный пароль. При этом сама
серверная программа CVS на самом деле выполняется на правах
системного пользователя pubcvs. Таким образом, в системе
не требуется заводить пользователя melissa, но
обязательно должен быть пользователь pubcvs.
Пятая строка демонстрирует, что системные пользователи могут
использоваться совместно: любой клиент, который успешно
аутентифицируется как qproj, будет работать на правах
системного пользователя pubcvs, так же, как и
melissa. Таким образом, вы можете создать единственного
общего системного пользователя для каждого проекта в вашем
репозитории, и предоставить каждому разработчику свою собственную
строку в файле `$CVSROOT/CVSROOT/passwd' будут журналироваться под этими
именами: когда melissa фиксирует изменения в проекте, эта
фиксация записывается в историю проекта под именем
melissa, а не pubcvs будет иметь права на
запись.
имени системного пользователя, и работает на его правах. В любом случае, если в системе нет такого пользователя, то CVS-сервер откажется работать, даже если клиент сказал правильный пароль.
Пароль и имя системного пользователя могут отсутствовать (при отсутствии последнего не следует писать двоеточие, которое служит разделителем полей). Например, файл `$CVSROOT/CVSROOT/passwd' может выглядеть так:
anonymous::pubcvs fish:rKa5jzULzmhOo:kfogel sussman:1sOp854gDF3DY
Когда пароль пропущен или пустой, то аутентификация произойдет успешно с любым паролем, включая пустую строку. Однако, двоеточие после имени пользователя CVS всегда обязательно, даже если пароль пуст.
CVS также может использовать стандартную системную
аутентификацию. При парольной аутентификации сервер сначала
проверяет наличие пользователя в файле
`$CVSROOT/CVSROOT/passwd'. Если пользователь обнаружен в
этом файле, то соответствующая строка будет использована для
аутентификации, как описано выше. Если же пользователь не
найден, или файле `passwd' не существует, то сервер пытается
аутентифицировать пользователя с помощью системных процедур (это
"резервное" поведение может быть запрещено, установив
SystemAuth=no в файле `config', see section Файл конфигурации CVSROOT/config сети в текстовом виде.
См. section Вопросы безопасности при парольной аутентификации, где описаны
детали.
В настоящее время единственный способ поместить пароль в
`CVSROOT/passwd' -- это вырезать его откуда-нибудь еще.
Когда-нибудь появится команда cvs passwd.
В отличие от большинства файлов в `$CVSROOT/CVSROOT', обычно практикуется редактирование файла `passwd' прямо в репозитории, без использования CVS. Это из-за риска безопасности, связанного с извлечением этого файла в чью-нибудь рабочую копию. Если вы хотите, чтобы файл `passwd' извлекался вместе с остальными файлами в `$CVSROOT/CVSROOT', см. See section Как в каталоге CVSROOT хранятся файлы.
Go to the first, previous, next, last section, table of contents.
| Главная |