┌vod
Hledat
OvladaΦe
Hardware
Software
AbφΦko
O nßs

CVS na dßlku

CVS na dßlku

14. 6. 2002 09:46 | Leo╣ Literßk

P°inß╣φme vßm krßtk² nßvod, jak zp°φstupnit CVS pro vzdßlen² p°φstup.

┌vod

Velkß Φßst Open Source projekt∙ vyu╛φvß jako software na sprßvu verzφ CVS. Existujφ sice lep╣φ alternativy, ale CVS je v tΘto oblasti tΘm∞° standardem. Nainstalovat CVS nenφ velk² problΘm, v dob∞ RPM Φi PKG to zvlßdne ka╛d². O n∞co slo╛it∞j╣φ je situace, kdy chcete k CVS p°istupovat vzdßlen∞. A touto tΘmatikou se zab²vß tento Φlßnek.

Existuje vφce zp∙sob∙, jak p°istupovat vzdßlen∞ k CVS. Jsou to p°φstup p°es rsh, autentifikace p°es heslo (pserver), CSSAPI a Kerberos. Rsh mß smysl leda na uzav°enΘ sφti (t°eba za firewallem), kde si v╣ichni u╛ivatelΘ navzßjem v∞°φ. O n∞co lep╣φm °e╣enφm je autentifikace u╛ivatel∙ p°es Kerberos, CVS zvlßdß jeho verzi 4. S nßstupem verze 5 auto°i vytvo°ili obecnΘ rozhranφ CSSAPI. Pro mΘ ·Φely se v╣ak nejvφce hodφ pserver. Je snadn² na instalaci a konfiguraci a zßrove≥ umo╛≥uje vytvo°it si virtußlnφ u╛ivatele Φi vymyslet existujφcφm u╛ivatel∙m hesla platnß jen pro CVS. Tak╛e pokud ·toΦnφk bude odposlouchßvat va╣i relaci, s CVS heslem vß╣ server nenabourß.

SystΘmovß Φßst

Prvnφ Φßst konfigurace pserveru musφte provΘst jako root. Je t°eba p°idat do sφ╗ov²ch slu╛eb CVS. Do souboru /etc/services vlo╛te tuto °ßdku:

cvspserver 2401/tcp

a pokud pou╛φvßte dΘmon inetd, pak do souboru /etc/inetd.conf tuto:

cvspserver stream tcp nowait root /usr/bin/cvs cvs -f --allow-root=/home/literakl/CVSROOT pserver

Modernφ distribuce preferujφ dΘmon xinetd, tak╛e budeme muset vytvo°it soubor /etc/xinetd.d/cvspserver:

service cvspserver
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/home/literakl/CVSROOT pserver
}

V obou p°φpadech parametr --allow-root ukazuje na CVSROOT, kter² bude takto zp°φstupn∞n p°es pserver. Pokud mßte vφce repozitß°∙, m∙╛ete jej pou╛φt vφcekrßt.

V tuto chvφli je t°eba je╣t∞ restartovat inetd, respektive xinetd. Pod RedHatem a spol. spus╗te

$ /etc/init.d/inet reload

respektive

$ /etc/init.d/xinetd reload

Nastavenφ CVSROOT

Nynφ je t°eba zinicializovat CVSROOT. P°ihlßsφme se jako u╛ivatel vlastnφcφ adresß° CVSROOT, v tomto p°φpad∞ literakl a spustφme

$ cvs -d /home/literakl/CVSROOT init

Tφm se nßm vytvo°il adresß° /home/literakl/CVSROOT/CVSROOT obsahujφcφ spoustu administrativnφch soubor∙. Mezi nimi nßm v╣ak chybφ soubor passwd, kter² je urΦen prßv∞ pro vzdßlen² p°φstup. Jeho obsah je nßpadn∞ podobn² systΘmovΘmu souboru /etc/passwd. Ka╛d² °ßdek obsahuje jedno a╛ t°i polφΦka odd∞lenΘ dvojteΦkou. Prvnφ polφΦko urΦuje p°φstupovΘ jmΘno pro CVS. Tφmto jmΘnem se budete logovat do CVS. DruhΘ polφΦko urΦuje heslo za╣ifrovanΘ pomocφ funkce crypt. A koneΦn∞ poslednφ polφΦko urΦuje skuteΦnΘho u╛ivatele na systΘmu. CVS bude provßd∞t v╣echny zm∞ny jeho jmΘnem.

Rozeberme si pravidla na praktickΘm p°φklad∞:

$ cat /home/literakl/CVSROOT/CVSROOT/passwd
pub::pubcvs
literakl:HTRphPBvKJtjA:literakl
oazanon:TXiF1923PHrtI:oazanon

Prvnφ °ßdek urΦuje, ╛e CVS u╛ivatel pub nepot°ebuje ╛ßdnΘ heslo a je namapovßn jako systΘmov² u╛ivatel pubcvs. Takov² u╛ivatel v∞t╣inou mφvß p°φstup jen ke Φtenφ. To snadno zajistφte, pokud vytvo°φte skupinu cvsusers, do kterΘ p°idßte u╛ivatele pubcvs, literakl a oazanon a dßte tΘto skupin∞ prßvo Φtenφ na cel² CVSROOT.

$ groupadd cvsusers
$ vi /etc/group
cvsusers:x:503:pubcvs,literakl,oazanon

a v novΘm shellu

$ chmod -R g+r-w /home/literakl/CVSROOT
$ chgrp -R cvsusers /home/literakl/CVSROOT

Dal╣φ °ßdky definujφ dva u╛ivatele s heslem, kte°φ jsou namapovßni na stejnΘ u╛ivatele, kte°φ ji╛ existujφ v systΘmu. Takto jsme jim urΦili hesla pro CVS, kterß by m∞la b²t odli╣nß od systΘmov²ch hesel.

Jen╛e jak ta hesla za╣ifrujeme? S Perlem je to hraΦka:-(nejsem autorem)

$ vi cvspassword.pl

#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}\n";

$ chmod +x cvspassword.pl
$ ./cvspassword.pl heslo

Tφmto konΦφ konfigurace na stran∞ serveru.

Klient

U╛ivatelΘ p°istupujφcφ z cizφho serveru musφ nastavit CVSROOT a zalogovat se. Je dobrΘ ulo╛it prom∞nnou CVSROOT do souboru ~/.profile:

export CVSROOT=:pserver:literakl@localhost/home/literakl/CVSROOT

Zalogujeme se pomocφ p°φkazu cvs login:

$ cvs login
Logging in to :pserver:literakl@localhost:2401/home/literakl/CVSROOT
CVS password: heslo

Od tΘto chvφle m∙╛eme p°istupovat k CVS vzdßlen∞ p°es pserver.

Pokud CVS neovlßdßte, mohu doporuΦit Φlßnek na Rootovi a v Linuxov²ch novinßch.

Diskuse k tomuto Φlßnku

Datum: 16. 6. 2002 21:34
Od: CDave
Titulek: A co vzdaleny pristup k CVS pres SSH?

My pro nase projekty pouzivame prave prenos CVS pres SSH a jsme s tim naprosto spokojeni.

Datum: 16. 6. 2002 21:39
Od: CDave
Titulek: jo a jeste neco

pri pouziti SSH si muzu vytvorit klic na serveru a na klientovi a nemusim pouzivat zadne heslo. Proste pouzivam #>cvs checkout
#>cvs update
#>cvs add test.c
#>cvs commit
... :) ...

Datum: 17. 6. 2002 06:56
Od: Leo╣ Literßk
Titulek: jo a jeste neco

ahoj, to heslo u klasickeho pserveru se take zadava jenom jednou.

mohl bys tu popsat presny postup, jak na to ssh? docela by mne to zajimalo. diky

Datum: 17. 6. 2002 09:52
Od: Pavel Krebs
Titulek: jo a jeste neco

Pristup pres SSH je vcelku jednoduchy. Staci nastavit 2 promenne prostredi a je to.

Prvni promenna je CVSROOT=:ext:server.domena:/adresar/na/serveru

A druha: CVS_RSH=ssh

Na serveru cvs nemusi bezet, jako pri pristupu pres pserver. Dale je pak rozdil, ze se nepouziva prikaz cvs login a cvs logout, ale heslo se zadava pri kazdem prikazu. Chci-li si usetrit zadavani hesla, musim pro ssh vygenerovat klice a spravne je nahrat do konfigurace ssh.

Klice se generuji pomoci prikazu: ssh-keygen -t rsa

Tento prikaz vygeneruje dva soubory: id_rsa - privatni klic, ten je ulozen na klientovi v adresari $HOME/.ssh

a id_rsa.pub - ten patri na server. Jeho obsah se prida do souboru $HOME/.ssh/authorized_keys

Pak by vse melo chodit bez otazky na heslo. Podobne se lze pripojit i na CVS server z Windowsu, ale to uz je trochu jine tema.

Pavel

Datum: 22. 6. 2002 10:02
Od: Cdave
Titulek: jo a jeste neco

Todle vypada jeste jednoduseji nez to delam ja :) Ja to delam podobne, ale presto trosku jinak. Jedinny rozdil je v pouziti souboru config v ./ssh

Tady je posup jak rozchodit cvs pres ssh:
1) na cvs serveru rozjet ssh
2) na klientovi (v ~/.profile) nastavit:
export CVSROOT=cvs:/home/cvs
export CVS_RSH=ssh
3) na klientovi vytvorit ~/.ssh/config s obsahem:
Host cvs
Hostname 192.168.1.100
Port 22
Compression yes
User cdave
IdentityFile ~/.ssh/identity

4) vygenerovat klic na klientovi (klidne bez hesla): ssh-keygen
5) pridat prislusny radek z klient:~/.ssh/identity.pub do server:~/.ssh/authorized_keys

A uz by to melo svistet!


(c) AbcLinuxu s.r.o.   Grafika: megadesign