RHCSA
Red Hat Certified System Administrator
레드햇에서 검증하는 레드햇 리눅스 시스템 관리에 대한 기초 자격증
덤프
본 학습자료는 2013년 3월 29일 시행된 EX200 출제문제를 복원한 것으로 해당시험을 준비하고 있는 응시자의 학습 도움을 목적으로 작성 되었습니다. 문제구성은 아래와 같습니다.
- 1번~2번 : 시험을 응시하기 위한 필수문제로 기본점수를 주기 위함
- 3번~7번 : 유닉스 운영자면 충분히 해결 가능한 기초문제로 기본점수를 주기 위함
- 8번~14번 : 학습 후 리눅스에 대한 이해가 필요한 문제로 합격/불합격 결정함
시스템 ROOT 로그인
- 시험을 응시하기 위해서는 ROOT로 접속을 하여야 하는데 ROOT 계정의 패스워드를 알려주지 않습니다. 즉, ROOT 패스워드를 변경하여 부팅해야 합니다.
- 이 문제를 해결하지 못하면 시험을 진행하지 못합니다. 리눅스를 학습했다면 기본문제 이겠지만 해결 못하는 응시자가 1~2명 있습니다. 이런 낭패를 피하시려면 아래의 방법을 알아두면 되겠습니다.
- ROOT 패스워드 어떻게 바꿀까요?
- 부팅 과정에서 커널 설정을 읽을 때
ESC
키를 누름 - 부트 이미지 선택(e버튼)
- Kernel항목선택(e버튼)
빈칸 + 'single'
입력 → 엔터- 리부팅 (b버튼) → 싱글 모드로 리부팅
passwd root
명령어로 패스워드 변경reboot
명령어로 OS 리부팅함- 변경된 패스워드로 ROOT 접속시도
- 성공
- 부팅 과정에서 커널 설정을 읽을 때
- 이후 나오는 문제의 공통사항은
영구설정
입니다. 즉, 리부팅 이후에도 설정이 유지 되도록 설정을 해야 하므로 설정파일의 위치, 설정파일 변경방법, 설정파일 적용방법을 알아두는 것이 핵심입니다. 이를 검증하기 위해서는 반드시 한 문제 해결하고 1회 리부팅해서 적용이 정상적으로 되었는지 검증이 필요합니다.
응시용 서버명 및 네트웍 설정
- 1번 문제에 이어 시험응시를 위한 두 번째 필수 문제입니다.
- Hostname, IP, Gateway, DNS 설정하는 문제로 설정파일의 위치 및 방법, 그리고 네트웍서비스 재기동 방법만 알고 있다면 충분히 해결 가능합니다.
네트웍설정은 어떻게 할까요?
- Hostname 설정파일 → /etc/sysconfig/network
- IP,GW,DNS 설정파일 → /etc/sysconfig/network-scripts/ifcfg-eth0
- 아래와 같이 설정파일을 수정 (주의사항! DHCP OFF)
$ vim ifcfg-eth0 (Configure IP Address, Gateway and DNS) IPADDR=192.168.0.10 GATEWAY=192.168.0.254 DNS1=192.168.0.254
$ vim /etc/sysconfig/network HOSTNAME= station.domain40.example.com
계정생성
- harry, natasha, tom 계정을 만드세요. 이 계정은 admin 그룹의 소속입니다. (단, tom 계정은 접속정이 아닙니다.
- 매우 기초적인 문제입니다. 하지만 문제의 의미를 잘 파악해야 합니다. 계정을 생성하되 소속된 그룹을 2개를 갖도록 설정해야 합니다. 기본적으로 그룹을 지정하지 않고 계정을 생성하면 계정명과 동일한 이름으로 그룹이 생성되고 이 그룹의 소속이 됩니다.
$ useradd -G admin harry $ useradd -G admin natasha $ useradd -s /sbin/nologin tom
id harry;id Natasha;id tom
명령어로 결과 확인하세요.
디렉토리 권한설정
- /home 디렉토리 아래 admins 이라는 디렉토리를 생성하고 아래와 같이 디렉토리 권한설정을 하세요.
- amins 그룹의 사용자는 모드 읽기/쓰기가 가능하지만 그 밖에 사용자는 접근불가
- /home/admins 디렉토리 아래 생성되는 모든 파일은 admins 그룹이어야 함
$ cd /home/ $ mkdir admins / $ chown .admin admins/ $ chmod 770 admins/ $ chmod g+s admins/
crontab 등록
- harry 계정이 매일 14시 23분에 hello 를 출력하도록 설정하세요.
$ su - harry $ crontab -e 23 14 * * * /bin/echo hello
crontab -l
명령어로 확인하세요.
조건 만족하는 파일복사
- harry 가 생성한 모든 파일을 /opt/testfile 아래로 복사하세요.
$ mkdir -p /opt/testfile $ find / -user harry -exec cp -rfp {} /opt/testfile \;
파일내 조건 만족하는 Raw 복사
/opt/testfile/test
파일 내에 eng 단어를 포함하고 있는 모든 행을/tmp/test.cp
로 출력해라$ grep `eng' /etc/testfile/test > /tmp/test.cp
디스크 파티션을 이용하여 SWAP, Logical 볼륨 생성
- 할당된 디스크 파티션닝을 하여 SWAP, Logical Volume 을 만들어라. (768MB SWAP, 1G Logical 볼륨)
- 단, VG 생성할 때 Extend 의 1개 크기는 16MB로 하여 vg1 이름으로 생성,
- LV 생성시 50개의 Extend를 사용하여 lv1 이름으로 생성하여 /lv1 마운트함
- 여기서 주의를 해야하는 것은 시험환경이 이미 3개의 파티션을 사용하기 때문에 추가적으로 1개의 파티션만을 만들 수 있다. 그런데 SWAP, LVOL 2개를 만들라고 나온다. 당황스럽지만 Extend 파티션으로 해결하면 된다.
- 따라서, 애초 Extend 파티션을 생성하여 문제에 대응하면 시간을 아낄 수 있다.
fdisk -cu /dev/vda → 디스크 디바이스 명칭은 변경될 수 있다 p → 현재 파티션 테이블을 확인한다. n → 새로운 파티션을 생성한다. 4 → 네 번째 파티션 선택 e → Extended 파티션 선택 enter → 자동으로 계산된 섹터를 사용 +2G → SWAP과 LVOL을 모두 수용가능한 용량으로 할당 p → 현재 파티션 테이블을 확인한다. SWAP을 위한 파티션을 생성해 보자 n → 새로운 파티션을 생성한다. 5 → 다섯 번째 파티션 선택(위에서 Extend 파티션을 생성했기 때문에 추가적으로 파티션 생성이 가능하다) enter → 자동으로 계산된 섹터를 사용 +768M → SWAP 용량을 입력 t → 각 파티션은 타입을 가지고 있다. SWAP 타입을 설정한다. 8e → SWAP 사용을 위한 타입 번호이다. LV을 위한 파티션을 생성해 보자 n → 새로운 파티션을 생성한다. 6 → 여섯 번째 파티션 선택(위에서 Extend 파티션을 생성했기 때문에 추가적으로 파티션 생성이 가능하다) enter → 자동으로 계산된 섹터를 사용 +1G → LVOL 용량을 입력 t → 각 파티션은 타입을 가지고 있다. LV 타입을 설정한다. 82 → LV 사용을 위한 타입 번호이다. 파티션 생성이 완료가 되었다. 이제 저장하고 나가면 된다. w → 상기 설정을 저장한다.
- reboot
$ mkswap /dev/vda5 $ swapon -a $ swapon -s $ blkid /dev/vda5
- 위에 나온 UUID를 /etc/fstab 에 등록하여 영구적용을 한다.
$ vim /etc/fstab UUID=XXXXX swap swap defaults 0 0
swapon -s
명령어로 확인한다. 혹시 안 보인다면 리부팅 1회 한다.- LV 생성은 아래와 같은 과정을 따른다.(보통 etx4 로 생성하지만 시험에서 ext3 타입으로 생성하라고 나옴에 주의하자)
$ mkfs -t ext3 /dev/vda6 $ pvcreate /dev/vda6 $ vgcreate vg1 -s 16M /dev/vda6 $ lvcreate -n lv1 -l 50 vg1 $ blkid /dev/vda6
- 위에 나온 UUID를
/etc/fstab
에 등록하여 영구적용을 한다.$ vim /etc/fstab UUID=XXXXX /lv1 ext3 defaults 1 2 $ mount -a
- 명령어로 확인한다.
$ df -g
※ 마지막으로 리부팅 1회 하여 리부팅 후에도 설정이 유지되는 확인한다. 혹시 본인 설정 실수로 부팅이 안된다면 아래와 같이 조치한다.
파일시스템이 이상이 있으면 유지보수모드로 빠져 부팅이 되고 이는 Read-Only 모드이므로 파일 수정이 안 된다. 이때 mount -o remount,rw /
명령어로 Writable 모드로 변경하여 모든 파일 시스템을 재마운트 한다. 이제 vim /etc/fstab
의 파일시스템 오류 부분을 수정하고 reboot 명령어로 정상 부팅 시도를 한다.
FTP 설정 (익명사용자 접근)
- FTP 서비스를 활성화 하여 익명사용자가 접근가능 하도록 한다.
- FTP 패키지가 설치가 안되었으므로 Repository 를 설정하여 패키지를 설치하는 것이 이번 문제의 핵심이다.
$ vim /etc/yum.repos.d/local.repo [local] name=local.repo baseurl=ftp://instoructor.example.com/pub/example → 알려준다. enabled=1 gpgcheck=0
$ yum install -y vsftpd $ service vsftpd restart $ chkconfig vsftpd on → 리부팅 이후에도 서비스 활성화 되도록 한다. $ chkconfig --list vsftpd
$ vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES
HTTP 설정 (웹사이트 오픈)
- HTP 서비스를 활성화 하여 주어진 index.html 파일이 호출하도록 웹서버를 구성한다. 이 때 index.html 파일은 주어진다.
- HTTP 패키지가 설치가 안되었으므로 Repository 를 설정하여 패키지를 설치하는 것이 이번 문제의 핵심이다. 위에 FTP 패키지가 정상적으로 설치 되었다면 동일한 Repository 설정으로 패키지 설치가 가능하다.
- index.html 파일은 주어진 경로에 FTP로 접속해서 복사해 오면 된다.
$ yum install -y httpd $ chkconfig httpd on $ service httpd start $ cp /tmp/index.htm /var/www/htmll
$ vim /etc/httpd/conf/httpd.conf NameVirtualHost 192.168.0.254:80 → 알려준다. <VirtualHost 192.168.0.254:80> → 알려준다. DocumentRoot /var/www/html/ → index.html 파일 위치로 지정한다. ServerName instoructor.example.com → 알려준다. </VirtualHost>
LDAP 인증설정
- LDAP 설정을 하여 사용자가 SSH 접속시 LDAP 서버를 통하여 계정인증을 받도록 설정을 해주는 문제이다. WINDOWS 의 AD와 같다고 보면 된다.
- 이 문제에서 많이들 해결을 못하는 듯 하다. 이 설정을 위해 필요한 조건은 SSSD 패키지가 설치되어 있어야 하는 것이다. 또한 GUI 화면을 이용해라 설정파일을 건들어서는 설정을 외우기도 어렵고 오타의 위험이 있다.
$ yum groupinstall directory-client → 반드시 설치되야 한다. $ service sssd start $ chkconfig sssd on → 리부팅 이후에도 서비스 활성화 되도록 한다. $ chkconfig --list sssd $ system-config-authentication User Account Database: LDAP LDAP Server: ldap//instructor.example.com → 경로 알려준다. LDAP Search Base DN: dc=instructor,dc=example,dc=com Download CA → 경로 알려준다. Authentication Method: LDAP password Apply $ vim /etc/sssd.d/sssd.conf enumerate = YES $ service sssd restart
getent passwd
명령어로 LDAP 서버의 계정들이 보이는지 확인한다.
가장 확실한 검증은 시험장 물리적인 PC에서 접속시도를 한다. ssh ldapuser20@192.168.0.20 → ldapuser20 계정은 LDAP 서버에만 존재 password 입력 후 접속이 허용되면 10번 문제 성공!
AUTOFS 설정
- 10번 LDAP 설정의 두 번째 문제이다. LDAP 서버를 통하여 접속 하였을 경우 기본 홈디렉토리를 자동으로 마운트 되어 사용하도록 설정해주는 것이다.
- 이 문제를 해결하기 위한 조건은 autofs 서비스가 활성화 되어 있어야 한다.
$ chkconfig autofs on $ chkconfig autofs on → 리부팅 이후에도 서비스 활성화 되도록 한다. $ chkconfig --list autofs $ vim /etc/auto.master /rhome /etc/auto.ldap → /rhome은 시험에서 변경가능하다. $ showmount -e $도메인 출력결과를 확인하자. $ cp auto.misc auto.ldap $ vim auto.ladp ldapuser20 -rw 192.168.0.254:/rhome/ldapuser20 → 알려준다. $ service autofs stop $ server autofs start $ su - ladpuser40 → 위에 설정한 /rhome/ldapuser20가 홈디렉토리로 지정된다면 성공!
LV 파일시스템 용량 줄이기
- 이미 할당되어 마운트 되어 있는 vo 라는 LV 파일시스템을 300MB에서 100MB 로 용량을 줄여라.
- 용량을 확장하는 것은 온라인 작업이 가능하나 줄이는 것은 오프라인 작업이 수행되야 한다. 중요한 것은 줄이는 작업을 잘못하면 파일시스템이 망가지면서 시험환경을 리셋하여 앞에서 수행한 작업을 모두 다시 풀어야 하는 상황이 될 수 있으니 반드시 아래의 절차를 따라서 신중히 진행한다.
$ umount /vo $ fsck -f /dev/vg2/vo → lvdisplay 명령어로 어떤 디바이스인지 확인한다. 파일시스템에 대한 체크가 반드시 수행되야 함 $ resize2fs -f /dev/vg2/vo 100M
lvdisplay
명령어로 검증한다.$ lvreduce -L 100M /dev/vg2/lv2 $ mount -a
커널버전 업그레이드
- 현재 설정되어 있는 커널보다 상위의 커널을 설치하고 이를 부팅시 적용되도록 설정하는 것이 문제이다.
- 8번, 9번 문제를 해결하기 위해서 설정했던 Repository 설정을 그대로 활용하면 된다. yum 명령어로 커널의 업데이트 버전을 설치하면 된다.
- 아래와 같이 설정하면 됩니다. 쉽죠? ^^
$ yum update kernel 또는 yum install kernel 명령어 수행 $ cat /etc/grub.conf → 기존 커널과 설치된 커널이 모두 확인된다. 새로 설치된 커널이 상단에, 기존 커널이 하단에 위치 $ vim /etc/grub.conf default=0
파일 ACL 설정
- 주어진 조건에 맞게 특정 디렉토리에 대한 접근제어 설정을 하는 것이다.
/etc/fstab
파일을/var/tmp/
복사하고 아래의 조건으로 파일 ACL설정함- fstab 파일은 admin 그룹 소속
- test1 계정은 읽기/쓰기/수정 가능
- test2 계정은 어떠한 권한도 없다.
- test1, test2 계정은 admin 그룹 소속이다.
- 설정
$ cp /etc/fstab /var/tmp/ $ chgrp admin /var/tmp/fstab $ setfacl -m u:test1:rwx /var/tmp/fstab $ setfacl -m u:test2:--- /var/tmp/fstab $ ls -l -rw-rw-r--+ 1 root admin 685 Nov 10 15:29 /var/tmp/fstab
기타
리파지토리 설정
$ vi /etc/yum.repos.d/myrepo
$ yum update
서비스 설치/구동
- 설정 후 데몬 restart
$ yum install -y xxxx $ service xxxx start $ chkconfig xxxx on
- 설정 내용 테스트
$ service xxxx configtest
IP 설정
[root@server201 network-scripts]# cat ifcfg-eth1 DEVICE="eth1" BOOTPROTO=none NM_CONTROLLED="no" ONBOOT="yes" TYPE="Ethernet" UUID="dc4664fa-8bb9-4750-a9c5-490f34dc7fae" HWADDR=08:00:27:95:E8:FF
IPADDR=192.168.56.201 PREFIX=24 GATEWAY=192.168.56.1 ### /etc/sysconfig/network에 설정 무방
DEFROUTE=yes IPV6INIT=no
$ vi /etc/resolv.conf
$ vi /etc/nsswitch.conf
★ dhcp 일경우 따로 설정 안 함
방화벽
$ system-config-firewall* : 허용 서비스 선택
$ serivce iptables save
$ vi /etc/sysconfig/iptables ★
$ service iptables restart
$ serivce iptables save
$ iptables -L(재부팅 후에도 정책 제대로 되었는지 확인 필요)
SELinux
- SELinux는 context에 대해서 외울 것이 너무도 많다.
- 그냥 forcing 모드를 permissive로 변경하고 이 문제를 틀리는 것이 낫다.
- 다른 문제들에 영향을 주기 때문…
$ getsebool -a | grep xxxx $ setsebool -P xxxx=1 $ chcon -R -t xxxx 경로
$ yum install -y policycoreutils* $ semanage fcontest -l | grep /var/www $ semanage fcontext -a -t xxxx '/www(/.*)?' $ restorecon -Rv /www