기타 CVS Linux Setting [1]

황제낙엽 2007.03.01 00:55 조회 수 : 39 추천:61

sitelink1  
sitelink2  
sitelink3  
http://blog.naver.com/mickey109/60006489852CVS Linux Setting

RPM 으로 CVS를 설치 후 , 셋팅
mkdir /home/CVS
cvs -d /home/CVS init  - Repository 초기화(즉, CVSROOT란 디렉토리와 CVS 에서 기본적으로 쓰는 파일들이 생긴다)
groupadd cvs
vi /etc/group
 
내용중 cvs:*:510:flazma,pizza   그룹 구성원 추가

그러면 inetd로 CVS 접속을 허용하는 방법을 알아보자. 우선 CVS가 사용하는 포트 번호(2401번)를 등록해야 한다.
/etc/services에 다음과 같은 줄이 있는지 살펴 보자.

cvspserver      2401/tcp

만일 없다면 위의 내용을 추가하면 된다. 다음은 실제로 해당 포트를 열어줄 차례인데, 이는 씨스템이 inetd를 쓰고 있는지,
xinetd를 쓰고 있는지에 따라 설정 방법이 다르다.

1. inetd의 경우는 /etc/inetd.conf에 다음 내용을 추가한다.

cvspserver stream tcp nowait root /usr/bin/cvs cvs

   --allow-root=/home/cvs pserver


편의상 두 줄로 나타냈으나, 실제 파일에는 한 줄로 들어가야 한다. 만약 tcpd를 사용한다면 위의 줄 대신 다음을 추가한다.

cvspserver stream tcp nowait root /usr/sbin/tcpd /usr/bin/cvs

   --allow-root=/home/cvs pserver


물론 /usr/bin/cvs나 /usr/sbin/tcpd는 실제로 이들 명령이 위치하는 절대 경로로 써 주어야 한다.
새로운 설정 내용을 반영하려면 inetd를 재시작하여야 한다. inetd의 프로세스 ID가 357이라면 다음과 같이 HUP 신호를 보내면 된다.

# kill -HUP 357

2. xinetd를 쓴다면 /etc/xinetd.dcvspserver란 이름으로 별도의 파일을 만들어야 한다. 파일 내용은 다음과 같다.

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


inetd의 경우와 마찬가지로 /usr/bin/cvs는 cvs 명령의 절대 경로, /home/CVS는 저장소의 위치로 바꿔 준다.
xinetd를 재시작하는 방법도 inetd와 동일하다. 우선 xinetd의 프로세스 ID(357이라 가정한다)를 알아낸 후, HUP 신호를 보내자.

# kill -HUP 357
 
이제 접속 포트는 열어두었으니, 개발자들에게 CVS 계정을 발급하는 일만 남았다.
암호 인증 방식을 이용하는 경우, 계정과 암호는 저장소의 CVSROOT 디렉토리 밑에 passwd란 이름의 파일에 저장된다. 여기에서는 /home/CVS/CVSROOT/passwd가 될 것이다.
하지만 이 파일은 처음에는 존재하지 않는다. 그러므로 직접 만들어주어야 하는데, 먼저 예를 하나 보도록 하자.

flazma:YxNPCzaM/WCp2:cvs
pizza:Yw2najHG5cLfo:cvs


각 줄은 한 사용자에 대한 정보를 담고 있다. 줄은 ':'을 경계로 다시 세 부분으로 나뉘는데 첫 부분이 사용자의 CVS 계정 이름(씨스템 계정과는 무관하다), 그 다음은 암호, 그리고 마지막은 씨스템 계정 이름이다.
즉, 이 파일에는 현재 flazmapizza이라는 두 사용자가 등록되어 있고, 이들이 CVS 이용시에는 cvs란 씨스템 계정의 권한을 갖는 것이다.
암호부분은 유닉스 씨스템에서 전통적으로 사용되는 crypt 함수를 이용하여 변환된 값이 저장되어 있다.
새로운 사용자를 추가하려면 같은 형식으로 한 줄을 추가해 주면 된다. 하지만 간단한 방법으로 /etc/shadow 파일 안의 내용중 암호화된 부분을 사용하여 /home/CVS/CVSROOT/passwd 로 만들면 된다
 
마지막으로 필요한 것은 cvs란 씨스템 계정에 저장소에 대한 읽기 및 쓰기 권한을 주는 것이다.
앞 절과 일관성을 유지하려면 cvs란 그룹을 만들고 cvs란 사용자를 cvs 그룹에 추가한 후, cvs 그룹에 대한 권한을 같은 방법으로 열어주면 된다.

# chgrp -R cvs /home/CVS
# chmod ug+rwx /home/CVS /home/CVS/CVSROOT
로 권한 설정
 
CVS에 접근(login)
cvs -d :pserver:flazma@localhost:/home/CVS login
 
환경 변수 등록 (bash 쉘)
export CVSROOT=:pserver:flazma@localhost:/home/CVS
 
 
작업공간 생성 : CVS서버로부터 모듈들을 불러와 클라이언트에 작업공간을 생성한다.
※주의 : 현재 CVSN( Server ) 와 Linux CVS ( Server ) 에서 커맨드 가 안 먹는 것이 있음
cvs ls 라는 커맨드가 CVSNT에서는 먹히나 , Linux CVS에서는 안먹힘 , 셋팅상의 문제일수도??? 즉, 서버의 모듈 리스트를 가져올 수가 없음