RHCSA

Red Hat Certified System Administrator

레드햇에서 검증하는 레드햇 리눅스 시스템 관리에 대한 기초 자격증

덤프

본 학습자료는 2013년 3월 29일 시행된 EX200 출제문제를 복원한 것으로 해당시험을 준비하고 있는 응시자의 학습 도움을 목적으로 작성 되었습니다. 문제구성은 아래와 같습니다.

  • 1번~2번 : 시험을 응시하기 위한 필수문제로 기본점수를 주기 위함
  • 3번~7번 : 유닉스 운영자면 충분히 해결 가능한 기초문제로 기본점수를 주기 위함
  • 8번~14번 : 학습 후 리눅스에 대한 이해가 필요한 문제로 합격/불합격 결정함

시스템 ROOT 로그인

  1. 시험을 응시하기 위해서는 ROOT로 접속을 하여야 하는데 ROOT 계정의 패스워드를 알려주지 않습니다. 즉, ROOT 패스워드를 변경하여 부팅해야 합니다.
  2. 이 문제를 해결하지 못하면 시험을 진행하지 못합니다. 리눅스를 학습했다면 기본문제 이겠지만 해결 못하는 응시자가 1~2명 있습니다. 이런 낭패를 피하시려면 아래의 방법을 알아두면 되겠습니다.
  3. ROOT 패스워드 어떻게 바꿀까요?
    1. 부팅 과정에서 커널 설정을 읽을 때 ESC 키를 누름
    2. 부트 이미지 선택(e버튼)
    3. Kernel항목선택(e버튼)
    4. 빈칸 + 'single' 입력 → 엔터
    5. 리부팅 (b버튼) → 싱글 모드로 리부팅
    6. passwd root 명령어로 패스워드 변경
    7. reboot 명령어로 OS 리부팅함
    8. 변경된 패스워드로 ROOT 접속시도
    9. 성공
  4. 이후 나오는 문제의 공통사항은 영구설정입니다. 즉, 리부팅 이후에도 설정이 유지 되도록 설정을 해야 하므로 설정파일의 위치, 설정파일 변경방법, 설정파일 적용방법을 알아두는 것이 핵심입니다. 이를 검증하기 위해서는 반드시 한 문제 해결하고 1회 리부팅해서 적용이 정상적으로 되었는지 검증이 필요합니다.

응시용 서버명 및 네트웍 설정

  1. 1번 문제에 이어 시험응시를 위한 두 번째 필수 문제입니다.
  2. Hostname, IP, Gateway, DNS 설정하는 문제로 설정파일의 위치 및 방법, 그리고 네트웍서비스 재기동 방법만 알고 있다면 충분히 해결 가능합니다. 네트웍설정은 어떻게 할까요?
    • Hostname 설정파일 → /etc/sysconfig/network
    • IP,GW,DNS 설정파일 → /etc/sysconfig/network-scripts/ifcfg-eth0
  3. 아래와 같이 설정파일을 수정 (주의사항! 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 
    

계정생성

  1. harry, natasha, tom 계정을 만드세요. 이 계정은 admin 그룹의 소속입니다. (단, tom 계정은 접속정이 아닙니다.
  2. 매우 기초적인 문제입니다. 하지만 문제의 의미를 잘 파악해야 합니다. 계정을 생성하되 소속된 그룹을 2개를 갖도록 설정해야 합니다. 기본적으로 그룹을 지정하지 않고 계정을 생성하면 계정명과 동일한 이름으로 그룹이 생성되고 이 그룹의 소속이 됩니다.
     $ useradd -G admin harry
     $ useradd -G admin natasha
     $ useradd -s /sbin/nologin tom
    
  3. id harry;id Natasha;id tom 명령어로 결과 확인하세요.

디렉토리 권한설정

  1. /home 디렉토리 아래 admins 이라는 디렉토리를 생성하고 아래와 같이 디렉토리 권한설정을 하세요.
    • amins 그룹의 사용자는 모드 읽기/쓰기가 가능하지만 그 밖에 사용자는 접근불가
    • /home/admins 디렉토리 아래 생성되는 모든 파일은 admins 그룹이어야 함
       $ cd /home/
       $ mkdir admins /
       $ chown .admin admins/
       $ chmod 770 admins/
       $ chmod g+s admins/
      

crontab 등록

  1. harry 계정이 매일 14시 23분에 hello 를 출력하도록 설정하세요.
     $ su - harry
     $ crontab -e
       23 14 * * * /bin/echo hello
    
  2. crontab -l 명령어로 확인하세요.

조건 만족하는 파일복사

  1. harry 가 생성한 모든 파일을 /opt/testfile 아래로 복사하세요.
     $ mkdir -p /opt/testfile
     $ find / -user harry -exec cp -rfp {} /opt/testfile \;
    

파일내 조건 만족하는 Raw 복사

  1. /opt/testfile/test 파일 내에 eng 단어를 포함하고 있는 모든 행을 /tmp/test.cp로 출력해라
     $ grep `eng' /etc/testfile/test > /tmp/test.cp
    

디스크 파티션을 이용하여 SWAP, Logical 볼륨 생성

  1. 할당된 디스크 파티션닝을 하여 SWAP, Logical Volume 을 만들어라. (768MB SWAP, 1G Logical 볼륨)
    • 단, VG 생성할 때 Extend 의 1개 크기는 16MB로 하여 vg1 이름으로 생성,
    • LV 생성시 50개의 Extend를 사용하여 lv1 이름으로 생성하여 /lv1 마운트함
  2. 여기서 주의를 해야하는 것은 시험환경이 이미 3개의 파티션을 사용하기 때문에 추가적으로 1개의 파티션만을 만들 수 있다. 그런데 SWAP, LVOL 2개를 만들라고 나온다. 당황스럽지만 Extend 파티션으로 해결하면 된다.
  3. 따라서, 애초 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 → 상기 설정을 저장한다.
    
  4. reboot
     $ mkswap /dev/vda5
     $ swapon -a
     $ swapon -s
     $ blkid /dev/vda5
    
  5. 위에 나온 UUID를 /etc/fstab 에 등록하여 영구적용을 한다.
     $ vim /etc/fstab
      UUID=XXXXX swap swap defaults 0 0
    
  6. swapon -s 명령어로 확인한다. 혹시 안 보인다면 리부팅 1회 한다.
  7. 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
    
  8. 위에 나온 UUID를 /etc/fstab 에 등록하여 영구적용을 한다.
     $ vim /etc/fstab
      UUID=XXXXX /lv1 ext3 defaults 1 2
     $ mount -a
    
  9. 명령어로 확인한다.
     $ df -g
    

※ 마지막으로 리부팅 1회 하여 리부팅 후에도 설정이 유지되는 확인한다. 혹시 본인 설정 실수로 부팅이 안된다면 아래와 같이 조치한다.

파일시스템이 이상이 있으면 유지보수모드로 빠져 부팅이 되고 이는 Read-Only 모드이므로 파일 수정이 안 된다. 이때 mount -o remount,rw / 명령어로 Writable 모드로 변경하여 모든 파일 시스템을 재마운트 한다. 이제 vim /etc/fstab 의 파일시스템 오류 부분을 수정하고 reboot 명령어로 정상 부팅 시도를 한다.

FTP 설정 (익명사용자 접근)

  1. FTP 서비스를 활성화 하여 익명사용자가 접근가능 하도록 한다.
  2. 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 설정 (웹사이트 오픈)

  1. HTP 서비스를 활성화 하여 주어진 index.html 파일이 호출하도록 웹서버를 구성한다. 이 때 index.html 파일은 주어진다.
  2. HTTP 패키지가 설치가 안되었으므로 Repository 를 설정하여 패키지를 설치하는 것이 이번 문제의 핵심이다. 위에 FTP 패키지가 정상적으로 설치 되었다면 동일한 Repository 설정으로 패키지 설치가 가능하다.
  3. 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 인증설정

  1. LDAP 설정을 하여 사용자가 SSH 접속시 LDAP 서버를 통하여 계정인증을 받도록 설정을 해주는 문제이다. WINDOWS 의 AD와 같다고 보면 된다.
  2. 이 문제에서 많이들 해결을 못하는 듯 하다. 이 설정을 위해 필요한 조건은 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
    
  3. getent passwd 명령어로 LDAP 서버의 계정들이 보이는지 확인한다.

가장 확실한 검증은 시험장 물리적인 PC에서 접속시도를 한다. ssh ldapuser20@192.168.0.20 → ldapuser20 계정은 LDAP 서버에만 존재 password 입력 후 접속이 허용되면 10번 문제 성공!

AUTOFS 설정

  1. 10번 LDAP 설정의 두 번째 문제이다. LDAP 서버를 통하여 접속 하였을 경우 기본 홈디렉토리를 자동으로 마운트 되어 사용하도록 설정해주는 것이다.
  2. 이 문제를 해결하기 위한 조건은 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 파일시스템 용량 줄이기

  1. 이미 할당되어 마운트 되어 있는 vo 라는 LV 파일시스템을 300MB에서 100MB 로 용량을 줄여라.
  2. 용량을 확장하는 것은 온라인 작업이 가능하나 줄이는 것은 오프라인 작업이 수행되야 한다. 중요한 것은 줄이는 작업을 잘못하면 파일시스템이 망가지면서 시험환경을 리셋하여 앞에서 수행한 작업을 모두 다시 풀어야 하는 상황이 될 수 있으니 반드시 아래의 절차를 따라서 신중히 진행한다.
     $ umount /vo
     $ fsck -f /dev/vg2/vo → lvdisplay 명령어로 어떤 디바이스인지 확인한다. 파일시스템에 대한 체크가 반드시 수행되야 함
     $ resize2fs -f /dev/vg2/vo 100M
    
  3. lvdisplay 명령어로 검증한다.
     $ lvreduce -L 100M /dev/vg2/lv2
     $ mount -a
    

커널버전 업그레이드

  1. 현재 설정되어 있는 커널보다 상위의 커널을 설치하고 이를 부팅시 적용되도록 설정하는 것이 문제이다.
  2. 8번, 9번 문제를 해결하기 위해서 설정했던 Repository 설정을 그대로 활용하면 된다. yum 명령어로 커널의 업데이트 버전을 설치하면 된다.
  3. 아래와 같이 설정하면 됩니다. 쉽죠? ^^
     $ yum update kernel 또는 yum install kernel 명령어 수행
     $ cat /etc/grub.conf → 기존 커널과 설치된 커널이 모두 확인된다. 새로 설치된 커널이 상단에, 기존 커널이 하단에 위치
     $ vim /etc/grub.conf
      default=0 
    

파일 ACL 설정

  1. 주어진 조건에 맞게 특정 디렉토리에 대한 접근제어 설정을 하는 것이다.
  2. /etc/fstab 파일을 /var/tmp/ 복사하고 아래의 조건으로 파일 ACL설정함
    • fstab 파일은 admin 그룹 소속
    • test1 계정은 읽기/쓰기/수정 가능
    • test2 계정은 어떠한 권한도 없다.
    • test1, test2 계정은 admin 그룹 소속이다.
  3. 설정
     $ 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 

서비스 설치/구동

  1. 설정 후 데몬 restart
     $ yum install -y xxxx 
     $ service xxxx start 
     $ chkconfig xxxx on 
    
  2. 설정 내용 테스트
      $ 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