본문 바로가기

밥벌이1 - S/W/Java

[CVS] Linux CVS 설치

이제는 이거 안쓰고 SVN을 쓰지만.. 그냥 참고로^^;;

1. CVS 설치
최근 배포판의 Linux에는 대부분 CVS가 설치가 되어 있을 겁니다. 간단히 쉘에서 cvs명령어를 이용해 자신의 linux에 cvs설치가 되어 있는지 확인 할 수 있고, cvs version 명령어를 통해 cvs버전 또한 알 수 있습니다.
만약 자신 linux에 cvs가 설치되어 있지 않거나 최신버전의 cvs를 설치하고 싶다면 www.cvshome.org 를 방문하여 최신 버전의 cvs를 방문하여 rpm패키를 다운받아 설치 할 수 있습니다.

또는 요즘 유행하는 yum을 이용하여 설치 할 수 있습니다. 만약 cvs가 설치되지 않다면
yum install cvs
란 명령어를 친다면 linux에는 자동으로 cvs가 설치 될 것니다. 쉽죠?

만약 yum이 무엇인지 모르신다면 직접 검색해서 찾아보시거나 다음 강좌를 기다려 주세요..^^;;

2008년 1월 16일 현재 cvs의 최신버전은 1.12.12 버전이며 RPM파일을 아래주소에서 다운받을 수 있습니다.
ftp.gnu.org/non-gnu/cvs/binary/feature/x86-linux/RPMS/i386/cvs-1.12.7-cvshome.org.9x.1.i386.rpm


2. CVS 서버 설정
자 CVS를 서버에 설치했다면 이제 CVS 서버 설정을 해보도록 하죠.
CVS 서버 설정은 크게 다음과 같이 있습니다.
1) CVS 계정 추가
2) CVS 폴더 생성
3) CVS 폴더에 권한 입력
4) CVS 내부 사용자 입력
5) CVS 접속을 위한 xinetd 설정 및 pam 설정

위의 5단계를 모두 따라한다면 당신은 CVS서버를 가졌다고 친구에게 자랑을 할 수 있을겁니다.

자 그럼 시작해 볼까요?

일반 CVS 계정부터 Linux계정에 추가해 봅시다.
대부분의 linux관리자분이라면 사용자 추가 명령어 쯤은 알고 계실겁니다.
하지만 혹시 모르시는분을 위해 책을 뒤적거리는 수고를 줄이고자 아래에 방법을 적어 놓았습니다.

useradd cvs

단 2마디 입니다. 이로써 시스템에 cvs란 계정이 생성되었습니다. 계정이 생성됨과 동시에 cvs란 그룹도 생성이 될겁니다. 이는 각각 /etc/passwd (계정), /etc/group(그룹)에서 확인해 보실 수 있을겁니다.
하지만 실제로 cvs를 운영하면서 cvs란 계정은 로그인을 하지 않습니다.

다음은 실제 CVS파일들이 저장될 폴더를 생성합니다.
이폴더는 아무곳에나 생성하셔도 됩니다.
되도록 용량이 여유가 있는곳이 좋겠죠.
다음과 같이 입력합니다.

mkdir /home/cvs
cvs -d /home/cvs init

밑줄친 부분에 원하시는 폴더를 적어 생성합니다. 전 임시로 /home/cvs에 생성했습니다.
그 다음 명령어인 cvs -d /home/cvs /init는 cvs에게 /home/cvs/ 를 cvs기본폴더로 지정하겠다라고하는 명령어 입니다. /home/cvs/폴더에 보면 CVSROOT란 폴더가 생성되어 있을 것이고, 그안에 기본 cvs 설정값이 들어 있을것입니다.


이제 생성한 폴더에 권한을 넣을 차례입니다.

chown -R root:cvs /home/cvs
chmod -R 770 /home/cvs

chown는 파일이나 폴더에 사용자 권한을 수정하는 명령어입니다. 하지만 :를 사용해 뒷부분에 그룹을 넣으주면 동시에 그룹또한 변경됩니다. -R 은 하위폴더 모두 변경한다는 뜻입니다.
chmod는 파일이나 폴더의 퍼미션을 변경하는 명령어입니다. 770이니 other를 제외한 사용자와 그룹사용자는 모두 쓰기, 읽기, 실행이 가능합니다.
다시한번 말했듯이 밑줄친 부분은 여러분이 지정하신 폴더를 넣으시면됩니다.

다음은 cvs 내부 계정추가입니다.
만약 서버내에서 개발과 CVS관리를 한다면 굳이 CVS내부 계정을 이용할 필요없이 cvs그룹에 사용할 내부 계정만 추가하여 사용하면 됩니다.
하지만 만약 CVS서버는 따로두고 개발을 각각의 PC나 워크스테이션에서 진행한다면 각각의 개발자에 CVS권한을 부여하여 개발하는것이 올바른 방법이고 이또한 대부분의 오픈소스진형에서 사용하고 있는 방법입니다.
권한을 추가하는 방법은 다음과 같습니다.

/home/cvs/CVSROOT/passwd 파일에 다음과 같은 형식으로 추가합니다.

id:passwd:cvs


하지만 cvs에서 passwd파일은 crypt알고리즘 패스워드를 사용한기 때문에 이대로는 접속이 안됩니다.
그렇기 때문에 crypt형식의 알고리즘을 생성하여 추가하여야 되는데, 가장쉬은 방법은 cvs에 맞는형식의 패스워드를 추가하는 명령어를 만드는 것 입니다.

/usr/bin/cvspasswd 파일을 생성하고 아래와 같이 넣습니다.

#!/usr/bin/perl
#
# Simple script to take a username and password and
# return a line suitable for pasting into the CVS
# password file
#
($u, $p)=@ARGV;
@d=(A..Z,a..z);
$s=$d[rand(52)].$d[rand52];
print $u.":".crypt($p, $s).":cvs\n";

저장한후

chmod a+x /usr/bin/cvspaswd

위의 명령어를 입력하여, 파일에 실행 권한을 입력합니다.

이제 다음과 같은 형식으로 사용자를 추가합니다.

cvspasswd id passwd >> /home/cvs/CVSROOT/passwd

passwd파일을 열어보면 crypt형식으로 패스워드가 입력된것이 보일겁니다.


이제 외부에서 사용자가 접속하기 위해 xinetd에 추가해보도록 하겠습니다.

cd /etc/xinetd.d

vi를 이용해 cvspserver 란 파일을 생성하고 다음과 같이 입력합니다.

# default: on
# description: The cvspsever serves CVS Password Server sessions; it uses \
#          unencrypted username/password pairs for authentication.
service cvspserver
{
        disable         = no
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/cvs
        server_args     = --allow-root=/home/cvs pserver
        log_on_failure  += USERID
}

이제 xinetd 데몬을 재 시작합니다.

service xinetd restart

cvs는 2401포트를 사용합니다.
다음 명령어로 2401포트가 열려 있는지 확인합니다.

netstat -na | grep 2401

아래와 같이 나온다면 정상적으로 xinetd 에 추가가 된것입니다.
tcp        0      0 0.0.0.0:2401                0.0.0.0:*                   LISTEN


만약 pam서비스가 작동중이지 않다면 이제 서버 설정은 끝난것입니다.
하지만 pam서비스가 서버에 설치가 되어 있다면 한가지를 더 해주셔야 합니다.
바로 pam 설정입니다. pam 설정을 해주시지 않으시면 아무리 올바르게 접속하셨다고 하더라도
다음과 같은 오류가 발생합니다.

cvs login : authorization falled

그럼 이제 pam을 설정해보도록 하겠습니다.

pam.d 폴더로 이동합니다.

cd /etc/pam.d


vi를 이용하여 cvs 파일을 생성하고 아래와 같이 입력하고 저장합니다.

#%PAM-1.0
auth        required    pam_stack.so service=system-auth
account     required    pam_stack.so service=system-auth


자 이제 서버 설정은 모두 종료가 되었습니다.