Questa sezione descriverà come settare, amministrare e rendere sicuro un server CVS.
Un server CVS verrà settato usando OpenSSH come metodo di accesso remoto. Altri metodi di accesso, incluso :pserver: e :server: non verranno usati per l'accesso in scrittura al repository CVS. Il metodo :pserver: invia password in chiaro sulla rete e il metodo :server: non è supportato in tutti i port di CVS. Istruzioni per l'accesso anonimo in sola lettura a CVS usando :pserver: si possono trovare al termine di questa sezione.
La configurazione del server CVS consiste di quattro passi:
Creare un nuovo repository CVS con i seguenti comandi:
mkdir /srv/cvsroot &&
chmod 1777 /srv/cvsroot &&
export CVSROOT=/srv/cvsroot &&
cvs init
Importare un modulo sorgente nel repository con i seguenti comandi, inseriti da un account utente sulla stessa macchina del repository CVS:
cd [sourcedir] &&
cvs import -m "[repository test]" [cvstest] [vendortag] [releasetag]
Testare l'accesso al repository CVS dallo stesso account utente con il seguente comando:
cvs co cvstest
Testare l'accesso al repository CVS da una macchina remota usando un account utente che ha accesso ssh al server CVS con i seguenti comandi:
Sostituire [servername] con l'indirizzo IP o il nome host della macchina CVS repository. Apparirà un prompt con la richiesta della password di shell dell'account utente prima che la verifica CVS possa continuare.
export CVS_RSH=/usr/bin/ssh &&
cvs -d:ext:[servername]:/srv/cvsroot co cvstest
CVS può essere settato per consentire l'accesso anonimo in sola lettura usando il metodo :pserver: eseguendo il logon come root ed eseguendo i seguenti comandi:
(grep anonymous /etc/passwd || useradd anonymous -s /bin/false) &&
echo anonymous: > /srv/cvsroot/CVSROOT/passwd &&
echo anonymous > /srv/cvsroot/CVSROOT/readers
Se si usa inetd il seguente comando aggiungerà la voce pserver a /etc/inetd.conf:
echo "2401 stream tcp nowait root /usr/bin/cvs cvs -f \
--allow-root=/srv/cvsroot pserver" >> /etc/inetd.conf
Digitare un killall -HUP inetd per rileggere il file inetd.conf modificato.
Se si usa xinetd il seguente comando aggiungerà la voce pserver a /etc/xinetd.conf:
cat >> /etc/xinetd.conf << "EOF" service cvspserver { port = 2401 socket_type = stream protocol = tcp wait = no user = root passenv = PATH server = /usr/bin/cvs server_args = -f --allow-root=/srv/cvsroot pserver } EOF
Digitare un /etc/rc.d/init.d/xinetd reload per rileggere il file xinetd.conf cambiato.
Il test dell'accesso anonimo al nuovo repository richiede un account su un'altra macchina che possa reggiungere il server CVS attraverso la rete. Non è necessario nessun account sul repository CVS. Per testare l'accesso anonimo al repository CVS, fare il log in su un'altra macchina come utente senza privilegi ed eseguire i seguenti comandi:
cvs -d:pserver:anonymous@[servername]:/srv/cvsroot co cvstest
Sostituire [servername] con l'indirizzo IP o l'hostname del server CVS.
mkdir /srv/cvsroot: crea la directory del repository CVS.
chmod 1777 /srv/cvsroot: setta i permessi dello sticky bit per CVSROOT.
export CVSROOT=/srv/cvsroot: specifica il nuovo CVSROOT per tutti i comandi cvs.
cvs init: inizializza il nuovo repository CVS.
cvs import -m "repository test" cvstest vendortag releasetag: tutti i moduli di codice sorgente devono essere importati nel repository CVS prima dell'uso con il comando cvs import. Il flag -m specifica un campo iniziale descrittivo per il nuovo modulo. Il parametro "cvstest" è il nome usato per il modulo in tutti i successivi comandi cvs. I parametri "vendortag" e "releasetag" sono usati identificare ulteriormente ciascun modulo CVS e sono obbligatori che siano usati o meno.
(grep anonymous /etc/passwd || useradd anonymous -s /bin/false): verifica l'esistenza di un utente anonimo e ne crea uno se non lo trova.
echo anonymous: > /srv/cvsroot/CVSROOT/passwd : aggiunge l'utente anonimo al file passwd CVS, che non è utilizzato per nient'altro in questa configurazione.
echo anonymous > /srv/cvsroot/CVSROOT/readers: aggiunge l'utente anonimo al file di lettura CVS, un elenco di utenti che hanno accesso in sola lettura al repository.
Last updated on