CVS Server mit cvsd

[tE]bachi

BSD Freak
Salü Zusammen

Habe ein grosses Problem mit cvsd, den ich von den Ports installiert habe.

Mit cvsd

/etc/passwd:
Code:
[...]
cvsd:*:1002:1001:cvs pserver daemon:/usr/home/bachi/cvs:/sbin/nologin
[...]

/etc/group:
Code:
[...]
cvsd:*:1001:
[...]

/usr/local/etc/cvsd/cvsd.conf
Code:
[...]
RootJail /usr/home/bachi/cvs
Uid cvsd
Gid cvsd
MaxConnections 10
Log /var/log/cvsd.log debug
Repos /CorporateMessenger
[...]

Shell:
Code:
[root@lan ~]# cvs -d /home/bachi/cvs/CorporateMessenger init
[root@lan ~]# /usr/local/etc/rc.d/cvsd.sh start

[bachi@lan ~]$ cvs -d :pserver:bachi@192.168.15.2:/CorporateMessenger login
Logging in to :pserver:bachi@192.168.15.2:2401/CorporateMessenger
CVS password:
cvs [login aborted]: end of file from server (consult above messages if any)

Log File:
Code:
cvsd: version 1.0.0 starting
cvsd: debug: binding :: 2401 family=28 socktype=1 protocol=6
cvsd: listening on :: 2401
cvsd: debug: binding 0.0.0.0 2401 family=2 socktype=1 protocol=6
cvsd: listening on 0.0.0.0 2401
cvsd: debug: chroot(/usr/home/bachi/cvs) done
cvsd: debug: nice(1) done
cvsd: debug: setgroups(0,NULL) done
cvsd: debug: setgid(0) done
cvsd: debug: setuid(1001) done
cvsd: debug: cvs command to execute: '/bin/cvs -f --allow-root=/CorporateMessenger pserver'
cvsd: accepting connections
cvsd: connection from 127.0.0.1 2209
cvsd: debug: fork() succeeded (child pid=652)
cvsd: debug: limit coredumpsize to 0(soft) and 0(hard)
cvsd: cvs command exited with exit-status 1
cvsd: debug: select() failed (ignored): Interrupted system call

Mit inet

/etc/inet.conf
Code:
[...]
cvspserver     stream  tcp     nowait  root    /usr/bin/cvs    cvs --allow-root=/your/cvsroot/here pserver
[...]

Shell:
Code:
[root@lan ~]# cvs -d /home/bachi/cvs/CorporateMessenger init
[root@lan ~]# inet

[bachi@lan ~]$ cvs -d :pserver:bachi@192.168.15.2:/home/bachi/cvs/CorporateMessenger login
Logging in to :pserver:bachi@192.168.15.2:2401/home/bachi/cvs/CorporateMessenger
CVS password:
[bachi@lan ~]$

Geht also mit inet... aber mit cvsd nicht... wiso?

greets

[tE]bachi
 
Hmmm... mit dem geänderten Configfile geht es:
Code:
RootJail none
Repos /usr/home/bachi/cvs/CorporateMessenger

hab auf der website mal ins FAQ geguckt. hat einen eintrag über chroots und so, aber komm nicht draus.

Hat jemand schonmal mit cvsd gearbeitet?

greets

[tE]bachi
 
Habs auch noch mit RootJail geschafft... ist eigentlich ganz leicht!

Zuerst muss ein Repository erstellt werden.
Code:
cvs -d /usr/local/cvs/root init

Danach werden alle Files, die ein cvsd-RootJail braucht ins /usr/local/cvs kopiert...
Code:
cvsd-buildroot /usr/local/cvs

... und das cvsd Config File editiert
Code:
RootJail /usr/local/cvs
Uid cvsd
Gid cvsd
Nice 1
Umask 027
Limit coredumpsize 0
PidFile /var/run/cvsd.pid
Listen * 2401
MaxConnections 10
Log syslog info
Repos /root

Mit dem Befehl
Code:
cvsd-passwd /usr/local/cvs/root +bachi
wird noch ein Benutzer hinzugefügt.

Zum Schluss wird der cvsd gestartet und mit einem Client eingeloggt
Code:
/usr/local/etc/rc.d/cvsd.sh start
cvs -d :pserver:bachi@192.168.15.3:/root login

Ich habe fertig!

greets

[tE]bachi
 
Noch immer Probleme mit cvsd

Hallo bachi (und alle anderen),

besten Dank für deine Tips. Damit bin ich schon ganz schön weit gekommen. :ugly:

Aber richtig gehen tuts noch immer nicht.
Code:
cvs [login aborted]: authorization failed: server proxy rejected access to /repository for user meinuser

So eine Meldung gibts lokal auf dem Server oder auch entfernt auf meinem Windows PC, wenn ich mich einloggen will.
;'( :zitter: ;'(
 
Nur so am Rande:
Spar dir doch das ganze mit cvsd/pserver und lasse die Authentizierung über ssh laufen.
So schickst du auch die Passwörter nicht im Klartext.
 
Klar mit SSH

Danke für den Tip. :cool:

Das wäre dann der nächste Schritt gewesen. :rolleyes:

Wenn ich doch nur überhaupt erstmal entfernt auf CVS käme. Damit ich sicher bin, dass der Rest der Konfiguration passt. :zitter: ;'( :zitter:
 
cvsd/pserver ist unnötig, um cvs über ssh laufen zu lassen.

Darum installiere einfach cvs, starte keinen Daemon (!), erzeuge eine cvs Gruppe, nimm alle User, die du willst,
in diese Gruppe auf, erzeuge dein cvsroot, init, import etc;
dann in die .profile oder so
CVSROOT=:ext:user@hostname:/var/cvsroot oder so
CVS_RSH=ssh

Wenn jemand nun
$cvs co dein_projekt_name_hier
dann muss er das Passwort zu seinem Account auf dem Host angeben.

So musst du nicht zwei Password-Listen (passwd und pserver) führen, keinen Daemon laufen haben
und schickst keine Passwörter im Klartext.

pserver ist also unnötig.
 
geht genauso wenig. Womit ich wieder am Anfang wäre...

Grundsätzlich muss doch pserver gehen. Machen ja andere auch. Und hinter der Firewall erst recht.
 
Login auf Cvs-Server via pserver geht, aber dann...

Also der Login klappt, aber komischerweise mit dem tatsächlichen Passwort des BSD-Users. Das Passwort, das ich bei
Code:
cvsd-passwd /usr/local/cvsd/repository +myuser
angegeben hatte, wirkt sich offensichtlich nicht aus. Warum?

Wenn ich dann einen ersten Modul importieren will, kommt folgende Meldung:
Code:
Cannot access /repository/CVSROOT
No such file or directory
Muss ich dem repository andere User/Groups zuweisen? Wenn ja welche (root/wheel oder cvsd/cvsd oder myuser/myuser oder myuser/cvsd ...).

Bin für jeden Hinweis dankbar.
 
Frei nach "Essential CVS" von Jennifer Vesperman:

Werde root.

CVS Repository anlegen:

#mkdir /var/cvsroot
Lege eine CVS-Gruppe an!
#chgrp cvs /var/cvsroot
#chmod g+srwx /var/cvsroot

CVS initialisieren:

#cvs -d /var/cvsroot init

CVS Repository und alle Unterverzeichnisse auf die CVS-Gruppe "ownen":
#chown -R cvs /var/cvsroot

Jetzt erstellst du eine Projektstruktur in deinem Home oder sonswo,
wechselst in das Hauptverzeichnis dieser Projektstruktur und importierst
dann dein Projekt.

#cvs -d /var/cvsroot import $verzeichnisname $projektname $version

Dann werde wieder zum User.

Wenn dein User Mitglied der CVS-Gruppe ist, so kannst du nun Dateien und
Verzeichnisse editieren anlegen und löschen (hier bei Verzeichnissen aufpassen!).

Du kannst normalerweise nicht als root CVS commits durchführen, weil CVS
dann nicht weiss, wer der letzte Author war. Diese Einschränkung könntest du
aber mit einem Compile-Flag (badroot o.ä.) aufheben.

Ich empfehle die Projektstruktur mit viel Überlegung anzulegen und erst, wenn
du wirklich sicher bist, dass sie sich ziemlich sicher nicht verändern wird, zu importieren.
Verzeichnisse in CVS umzubiegen ist sehr mühsam.
Schau mal Subversion an.

Und schenk dir cvsd/pserver ;-)
 
Ein Detail noch

Ich musste den User vor dem Aufruf von cvsd-buildroot anlegen,
weil der sonst meckert, dass er das /usr/local/cvs/CVSROOT/passwd
nicht findet.

Also:
Code:
mkdir /usr/local/cvs
mkdir /usr/local/cvs/root
pw groupadd cvsd
pw useradd cvsd -G cvsd 
chown -R cvsd:cvsd /usr/local/cvs
chmod -R g+srwx /usr/local/cvs
cvs -d /usr/local/cvs/root init
cvsd-passwd /usr/local/cvs/root +bachi
cvsd-buildroot /usr/local/cvs

Konfig:
Code:
RootJail /usr/local/cvs
Uid cvsd
Gid cvsd
Repos /root

Code:
/usr/local/etc/rc.d/cvsd.sh start
cvs -d :pserver:bachi@192.168.15.3:/root login
 
Zurück
Oben