O CVS é uma aplicação cliente/servidor, possuindo diversas maneiras de fazer o acesso seu repositório (veja “Repositório” repositórios). Estes métodos são os seguintes:
local (“local”).
ext (“ext”).
pserver (“pserver (password server)”).
fork (“fork”).
GSSAPI (“gssapi”).
Eles são explicados em detalhes nas sub-seções a seguir.
Acessa o diretório do repositório diretamente no disco local. A vantagem deste método é que não é requerido nem nome nem senha para acesso (você precisa apenas ter permissões para acesso aos arquivos que deseja trabalhar) e também não é preciso nenhuma conexão de rede.
Este método é ideal para trabalhar na máquina local ou com os arquivos
administrativos do CVS existentes no diretório CVSROOT
do
repositório. É muito útil também para configurar outros métodos de acesso,
como o pserver
.
Para criar seu repositório, veja “Criando um repositório”.
Para utilizar o método de acesso local, basta definir a variável
CVSROOT
da seguinte forma (assumindo que o
repositório esteja instalado em /var/lib/cvs
):
export CVSROOT=/var/lib/cvs ou export CVSROOT=local:/var/lib/cvs
Depois disso, basta utilizar os comandos normais do cvs sem precisar se autenticar no sistema. Veja os detalhes de utilização dos comandos de CVS após o login na seção “Clientes de CVS”.
Este método é semelhante ao local, mas ele "simula" uma conexão de rede com o servidor. É muito usado para fins de testes.
Para utilizar o método de acesso fork, basta definir a
variável CVSROOT
da seguinte forma (assumindo que o
repositório esteja instalado em /var/lib/cvs
):
export CVSROOT=fork:/var/lib/cvs
Depois disso, basta utilizar os comandos normais do cvs, sem precisar se autenticar no sistema. Veja os detalhes de utilização dos comandos do CVS após o login em “Clientes de CVS”.
Este método de acesso lhe permite especificar um programa externo que será
usado para fazer uma conexão remota com o servidor cvs.Este
programa é definido na variável CVS_RSH
e caso não
ela seja especificada o padrão é rsh.
Este método requer que o usuário possua um login/senha no banco de dados de
autenticação /etc/passwd
do servidor de destino. Suas
permissões de acesso ao CVS (leitura/gravação) serão as mesmas definidas neste
arquivo.
O uso do acesso criptografado via ssh é possível definindo o
programa ssh na variável CVS_RSH
.
Veja os exemplos a seguir em “Configurando o método ext”.
Para criar seu repositório, veja “Criando um repositório”.
Defina a variável CVSROOT
da seguinte forma para
utilizar este método de acesso (assumindo /var/lib/cvs
como repositório):
export CVSROOT=:ext:conta@servidor.org.br:/var/lib/cvs cvs login
A "conta" é uma conta de usuário existente no servidor remoto (por exemplo,
gleydson
) seguido do nome do servidor remoto (separado por
uma "@"). Por exemplo para acessar o servidor
cvs.cipsga.org.br usando a conta
michelle:
export CVSROOT=:ext:michelle@cvs.cipsga.org.br:/var/lib/cvs cvs checkout
OBS: A senha via método de acesso "ext" será pedida somente uma vez quando for
necessário o primeiro acesso ao servidor remoto. Veja os detalhes de
utilização dos comandos de CVS após o login na seção “Clientes de CVS”.
O uso mais freqüente do ext
é para conexões seguras feitas
via ssh, feita da seguinte forma:
export CVS_RSH=ssh export CVSROOT=:ext:michelle@cvs.cipsga.org.br:/var/lib/cvs cvs checkout
O acesso de leitura/gravação do usuário, é definido de acordo com as permissões deste usuário no sistema. Uma maneira recomendada é definir um grupo que terá acesso a gravação no CVS e adicionar usuários que possam fazer gravação neste grupo.
OBS1: O acesso via ssh traz a vantagem de que as senhas trafegarão de forma segura via rede, não sendo facilmente capturadas por sniffers e outros programas de monitoração que possam estar instalados na rota entre você e o servidor.
OBS2: É possível especificar a senha na
variável CVSROOT
usando a sintaxe semelhante a usada
no ftp:
export CVSROOT=:ext:michelle:senha@cvs.cipsga.org.br:/var/lib/cvs
Entretanto isto não é recomendado, pois os processos da máquina poderão capturar facilmente a senha (incluindo usuários normais, caso a máquina não esteja com patches de restrições de acesso a processos configurada, que é o padrão em quase todas as distribuições de Linux).
Este é um método de acesso remoto que utiliza um banco de dados de usuários
senhas para acesso ao repositório. A diferença em relação ao método de acesso
ext é que o pserver roda através de
um servidor próprio na porta 2401. O acesso dos usuários (leitura/gravação) no
repositório pode ser feita tanto através do banco de dados de usuários do
sistema (/etc/passwd
) como através de um banco de dados
separado por repositório.
A grande vantagem deste segundo método é que cada projeto poderá ter membros
com acessos diferenciados; o membro x poderá ter acesso ao projeto
sgml
mas não ao projeto focalinux
; ou o
usuário y poderá ter acesso de gravação (para trabalhar no projeto
focalinux
) mas somente acesso de leitura ao projeto
sgml
.
Este é o método de acesso preferido para a criação de usuários anônimos (uma
vez que o administrador de um servidor que hospede muitos projetos não vai
querer abrir um acesso anônimo via ext
para todos os
projetos).
Também existe a vantagem que novos membros do projeto e tarefas administrativas são feitas por qualquer pessoa que possua acesso de gravação aos arquivos do repositório.
Para ativar o pserver (caso ainda não o tenha feito). Execute o comando
dpkg-reconfigure cvs
e selecione a opção Ativar o
servidor pserver
. Uma maneira de fazer isso automaticamente é
modificando o arquivo /etc/inetd.conf
adicionando a
seguinte linha:
# na Debian cvspserver stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/cvs-pserver # em outras Distribuições cvspserver stream tcp nowait root /usr/bin/cvs cvs -f --allow-root=/var/lib/cvs pserver
Na Debian, o cvs é iniciado através do script
/usr/sbin/cvs-pserver
que checa os binários e executa o
cvs para todos os repositórios especificados no arquivo
/etc/cvs-pserver.conf
.
Caso precise adicionar mais repositórios para acesso via pserver ou outro método de acesso, veja “Criando um repositório”.
Você também poderá executar o método pserver
sob um usuário
que não seja o root, para isto, modifique a entreada referênte ao usuário.grupo
no inetd.conf
e tenha certeza que o daemon consegue fazer
as operações de suid/sgid no diretório onde o repositório se encontra.
Para usar o banco de dados de autenticação do sistema
(/etc/passwd
) para autenticar os usuários remotos,
primeiro tenha certeza que o servidor pserver está ativado
(como descrito em “Ativando o servidor pserver”.
Repetindo o exemplo anterior, a usuária Michelle deverá
ter uma conta em /etc/passwd
para fazer acesso ao cvs:
export CVSROOT=:pserver:michelle@cvs.cipsga.org.br:/var/lib/cvs cvs login
Será pedido a senha da usuária michelle
. Entrando com a
senha correta, o sistema retornará para o aviso de comando. Uma mensagem será
mostrada caso a senha entrada seja incorreta. Daqui em diante, o resto da
seção CVS é normal e você terá as permissões de acesso ao repositório de acordo
com as suas permissões de acesso naquele diretório.
OBS1: A senha poderá ser passada junto com o login da mesma forma como o ftp. Veja a observação em “Configurando o método ext”.
OBS2: A desvantagem do método pserver padrão
é que a seção é feita em texto plano, desta forma, alguns cuidados podem ser
tomados para tornar o sistema um pouco mais seguro. Um deles é dar
/bin/false
como shell de usuário (para desativar o login
no sistema) ou usar o método de acesso descrito em “Servidor pserver usando autenticação do sistema” em combinação com este. Tenha
conciencia das influências disso se a máquina for usada para outras tarefas,
como um servidor "pop3" por exemplo.
Esta forma de acesso armazena os usuários em um banco de dados próprio, não
requerendo a criação de contas locais no arquivo
/etc/passwd
. Para criar um servidor deste tipo siga os
seguintes procedimentos:
Exporte a variável CVSROOT
apontando para o
repositório que deseja configurar o acesso. Como isto é uma configuração
administrativa, assumo o método de acesso local sendo
usada pelo usuário administrador do servidor: export
CVSROOT=/var/lib/cvs
.
Crie um diretório para trabalhar nos arquivos administrativos do repositório:
mkdir /tmp/repos
Entre no diretório criado acima e execute o comando: cvs checkout
.
Quando terminar de baixar os arquivos, entre no subdiretório
CVSROOT
, os arquivos de configuração do repositório se
encontram lá (para detalhes sobre cada um destes arquivos, veja “Arquivos administrativos em CVSROOT”.
Edite o arquivo config
e mude a variável
SystemAuth
para no
. Isto diz ao
servidor pserver não usar os arquivos de autenticação do
sistema, mas a invés disso usar seu banco de dados próprio.
Em algumas instalações, caso exista o arquivo passwd
no
repositório, o pserver automaticamente o utiliza ao invés
do /etc/passwd
.
Crie um arquivo passwd
no diretório
CVSROOT
o formato deste arquivo é:
usuario:senha:usuario_local
Onde:
Nome da conta de usuário que fará acesso ao CVS.
Senha que será usada pelo usuário. Ela deverá ser criptografada usando o algoritmo crypt. O comando mkpasswd senha pode ser usado para gerar a senha criptografada. Caso este campo seja deixado em branco, nenhuma senha de usuário será utilizada. O utilitário mkpasswd está presente no pacote na Debian.
Usuário local que terá suas permissões mapeadas ao usuário do CVS. Como a conta de usuário do cvs não existe no sistema, é necessário que o sistema tenha uma maneira de saber que nível de acesso este usuário terá. Caso não crie este usuário ou ele seja inválido, você terá erros do tipo ": no such user" no momento que fizer o "cvs login".
Uma forma segura de se fazer isto, é criar uma conta de usuário *somente* com acesso aos arquivos do CVS, sem shell e senha. Isto permitirá mapear a UID/GID do usuário criado com o acesso do CVS sem comprometer a segurança do sistema de arquivos. Isto pode ser feito através do seguinte comando:
adduser --disabled-password --disabled-login usuario
É necessário especificar um diretório home do usuário, pois o servidor cvs
precisa ter acesso ao arquivo /home/do/cvs/.cvsignore
.
OBS1: Mais uma vez: Leve sempre em conta a forma que os outros serviços em sua máquina estão configurados (como eles fazem acesso, permissões de acesso, diretórios onde gravam arquivos, são algumas delas) antes de escolher como um serviço novo na máquina funcionará. Isto poderá modificar ou deixar vulnerável a segurança de sua instalação.
OBS2: Permita que os usuários somente tenham acesso a máquina via CVS.
OBS3: Certifique-se sempre que o dono/grupo
do repositório seja root.src
(ou outro grupo que tenha
criado) adicione somente usuários de confiança no grupo
src
para criar novos projetos.
Exemplos:
gleydsonm:K32dk1234k:cvsuser anonymous::pooruser
O usuário cvs gleydsonm quando logar no cvs, terá as permissões de acesso do usuário cvsuser do sistema.
OBS1: Certifique-se que o usuário local possui permissões de gravação no diretório do CVS, caso contrário ele não poderá fazer commits. Lembre-se que as permissões de leitura/gravação do usuário serão controladas através de arquivos do próprio pserver, mas também é necessária a permissão de gravação do usuário no repositório. Isto poderá ser feito através de grupos de sistema e garante uma dupla camada de segurança.
OBS2: Caso tenha preferido usar o
pserver
sob um usuário diferente de root e esteja obtendo a
mensagem setgid failed: Operation not permitted
, significa
que o servidor CVS não consegue mudar para o grupo referente ao usado no
diretório do repositório. Verifique se as permissões estão adequadas e se o
grupo do usuário CVS no /etc/passwd
é o mesmo que
especificou para acesso ao repositório.
Para dar direito de leitura ao repositório, crie um arquivo chamado
readers
e adicione os nomes de usuários que terão acesso
ao repositório (um por linha). O nome que deverá ser usado é o nome do usuário
de CVS e não do sistema (usuário
gleydsonm
, segundo o exemplo).
Exemplo:
gleydsonm anonymous
Para dar direito de gravação ao repositório, crie um arquivo chamado
writers
. Seu formato é idêntico ao arquivo
readers
.
Exemplo:
gleydsonm macan otavio hmh kov
Pronto, o acesso a CVS usando um banco de dados próprio está pronto! basta dar
o commit nos arquivos, adicionar os arquivos readers
,
writers
e passwd
no repositório (veja
“Adicionando um arquivo ao módulo CVS do servidor”) para o servidor de CVS para te-lo funcionando.
Note que em versões mais novas do CVS, não é possível transferir o arquivo
passwd
via rede, então será necessário cria-lo manualmente
dentro do repositório do servidor.
OBS: O arquivo passwd
não é transferido pelo commit por motivos de segurança, pois ele contém senhas
que podem ser capturadas e usada por pessoas maliciosas. Será necessário
transferi-lo manualmente para o repositório do servidor remoto (você terá que
ser o usuário root ou ter permissões adequadas). O
recomendável é utilizar o scp (“scp”) para realizar transferências seguras. .
O método de acesso do CVS aos arquivos readers
e
writers
é restritiva, portanto se um nome de usuário
existir no arquivo readers
e writers
o que valerá será o menor nível de acesso. Vendo os exemplos acima, os
usuários gleydsonm e anonymous terão somente acesso a
leitura do repositório e macan, otavio, hmh, kov acesso de
leitura e gravação.
Copyright © 1999-2020 - Gleydson Mazioli da Silva