Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
18.4. 설정 예
18.4.1. CVS 설정
이 예제에서는 간단한 CVS 설정과 원격 액세스를 허용하는 SELinux 구성을 설명합니다. 이 예에서는 두 개의 호스트 이름이
cvs-srv
이며 IP 주소가 192.168.1.1
이고 호스트 이름이 cvs-client
인 클라이언트와 IP 주소가 192.168.1.100
인 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.1
xinetd
데몬을 시작합니다.[cvs-srv]# systemctl start xinetd.service
system-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 denied
SELinux가 액세스를 차단했습니다. SELinux가 이러한 액세스를 허용하려면cvs-srv
에서 다음 단계를 수행해야 합니다. /cvs/
디렉토리의 기존 및 새 데이터에 재귀적으로 레이블을 지정하여cvs_data_t
유형을 지정하도록/cvs/
디렉터리의 컨텍스트를 root로 변경합니다.[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]$