18.4. 설정 예
18.4.1. CVS 설정 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
이 예제에서는 간단한 CVS 설정과 원격 액세스를 허용하는 SELinux 구성을 설명합니다. 이 예제에서는 두 개의 호스트가 사용됩니다. IP 주소가
192.168.1.1 이고 호스트 이름이 cvs-client 이고 IP 주소가 192.168.1.100 인 cvs-srv 의 호스트 이름이 있는 CVS 서버가 사용됩니다. 두 호스트 모두 동일한 서브넷(192.168.1.0/24)에 있습니다. 이 예제는 cvs 및 xinetd 패키지가 설치되어 있고, SELinux 대상 정책이 사용되고 SELinux가 강제 모드로 실행 중이라고 가정하는 유일한 예입니다.
이 예에서는 전체 DAC 권한을 가진 경우에도 SELinux가 파일 레이블을 기반으로 정책 규칙을 시행할 수 있으며 CVS에서 액세스하기 위해 특별히 레이블이 지정된 특정 영역에만 액세스할 수 있음을 보여줍니다.
참고
단계 1-9는 CVS 서버,
cvs-srv 에서 수행되어야 합니다.
- 이 예에서는 cvs 및 xinetd 패키지가 필요합니다. 패키지가 설치되었는지 확인합니다.
[cvs-srv]$ rpm -q cvs xinetd package cvs is not installed package xinetd is not installed설치되지 않은 경우yum유틸리티를 root로 사용하여 설치합니다.[cvs-srv]# yum install cvs xinetd - root로 다음 명령을 입력하여
CVS라는 그룹을 만듭니다.[cvs-srv]# groupadd CVS이 작업은system-config-users유틸리티를 사용하여 수행할 수도 있습니다. - 사용자 이름으로
cvsuser를 만들고 이 사용자를 CVS 그룹의 멤버로 만듭니다. 이 작업은system-config-users를 사용하여 수행할 수 있습니다. /etc/services파일을 편집하고 CVS 서버가 다음과 유사한 항목의 주석을 제거했는지 확인합니다.cvspserver 2401/tcp # CVS client/server operations cvspserver 2401/udp # CVS client/server operations- 파일 시스템의 루트 영역에 CVS 리포지토리를 만듭니다. SELinux를 사용하는 경우 다른 하위 디렉터리에 영향을 주지 않고 재귀 레이블을 제공할 수 있도록 루트 파일 시스템에 리포지토리가 있는 것이 가장 좋습니다. 예를 들어 root 로서 리포지토리를 저장할
/cvs/디렉터리를 만듭니다.[root@cvs-srv]# mkdir /cvs /cvs/디렉터리에 모든 사용자에게 전체 권한을 부여합니다.[root@cvs-srv]# chmod -R 777 /cvs주의이는 예제일 뿐이며 이러한 권한은 프로덕션 시스템에서 사용해서는 안 됩니다./etc/xinetd.d/cvs파일을 편집하고 CVS 섹션의 주석을 제거하고/cvs/디렉토리를 사용하도록 구성되어 있는지 확인합니다. 파일은 다음과 유사해야 합니다.service cvspserver { disable = no port = 2401 socket_type = stream protocol = tcp wait = no user = root passenv = PATH server = /usr/bin/cvs env = HOME=/cvs server_args = -f --allow-root=/cvs pserver # bind = 127.0.0.1xinetd데몬을 시작합니다.[cvs-srv]# systemctl start xinetd.servicesystem-config-firewall유틸리티를 사용하여 포트 2401에서 TCP를 통해 인바운드 연결을 허용하는 규칙을 추가합니다.- 클라이언트 측에서
cvsuser사용자로 다음 명령을 입력합니다.[cvsuser@cvs-client]$ cvs -d /cvs init - 이때 CVS는 구성되었지만 SELinux는 여전히 로그인 및 파일 액세스를 거부합니다. 이를 확인하려면
cvs-client에서$CVSROOT변수를 설정하고 원격으로 로그인을 시도합니다. 다음 단계는cvs-client에서 수행해야 합니다.[cvsuser@cvs-client]$ export CVSROOT=:pserver:cvsuser@192.168.1.1:/cvs [cvsuser@cvs-client]$ [cvsuser@cvs-client]$ cvs login Logging in to :pserver:cvsuser@192.168.1.1:2401/cvs CVS password: ******** cvs [login aborted]: unrecognized auth response from 192.168.100.1: cvs pserver: cannot open /cvs/CVSROOT/config: Permission deniedSELinux가 액세스를 차단했습니다. SELinux가 이 액세스를 허용하도록 하려면cvs-srv:에서 다음 단계를 수행해야 합니다. /cvs/디렉터리의 기존 및 새 데이터에 반복적으로 레이블을 지정하려면 /cvs/ 디렉터리의/cvs/디렉터리의 컨텍스트를 root로 변경하여cvs_data_t유형을 지정합니다.[root@cvs-srv]# semanage fcontext -a -t cvs_data_t '/cvs(/.*)?' [root@cvs-srv]# restorecon -R -v /cvs- 이제 클라이언트
cvs-client가 이 리포지토리의 모든 CVS 리소스에 로그인하고 액세스할 수 있어야 합니다.[cvsuser@cvs-client]$ export CVSROOT=:pserver:cvsuser@192.168.1.1:/cvs [cvsuser@cvs-client]$ [cvsuser@cvs-client]$ cvs login Logging in to :pserver:cvsuser@192.168.1.1:2401/cvs CVS password: ******** [cvsuser@cvs-client]$