[Linux] RHCSA v9 문제 풀이

2025. 9. 28. 21:40·Linux

시험환경과 비슷하게 구성하기 위해서 Red Hat Enterprise Linux로 VMware Fusion에서 VM을 만들고 바로 사용할 수 있으면 좋겠지만 사전 작업이 필요하다. 사전 작업이 다 끝난 VM을 스냅샷 저장하고 사용하면 좀 더 편하게 사용할 수 있다.

 


 

사전 작업

https://access.redhat.com/downloads/content/419/ver=/rhel---9/9.6/aarch64/product-software

 

The world's open source leader

Red Hat is the world’s leading provider of open source solutions, using a community-powered approach to provide reliable and high-performing cloud, virtualization, storage, Linux, and middleware technologies. Red Hat also offers award-winning support, tr

www.redhat.com

Red Hat Enterprise Linux를 먼저 OS에 맞게 다운받아준다. (시험이 v9이니 9.X버전으로 다운로드)

 

1. 디스크 추가

이후 동일하게 VM을 생성한 다음 새로운 디스크를 생성해서 LVM문제를 풀어볼 수 있도록 환경을 비슷하게 만들어 준다.

VM 종료 → VM 선택 → Settings → Add Device → Hard Disk

디스크 크기 1GB, 타입 NVMe → 저장 → 재시작

실제 시험 문제에서도 1GB를 넘는 문제를 본적이 없으니 1GB면 충분하다.

 

2. 저장소 설정

RHEL은 기본적으로 Red Hat CDN(콘텐츠 전송 네트워크) 저장소를 사용하기 때문에 다른 리눅스처럼 바로 저장소를 사용할 수 없다.

이 저장소는 Red Hat 고객 포털에 등록된 시스템만 접근 가능하기에 등록되지 않으면 /etc/yum.repos.d/ 안에 활성화된 .repo 파일이 없으므로 dnf update, dnf install 등이 모두 실패한다.

sudo subscription-manager register --username <RHID>
  • 레드햇 이메일과 비밀번호를 입력하여 연동rhel-9-for-x86_64-baseos-rpms 항목이 보이면 정상적으로 연동

이제 문제에 필요한 서비스를 다른 리눅스 처럼 다운받을 수 있다.

 

3. GRUB

VMware Fusion에서 재시작 후 esc키를 눌렀을 때 GRUB 화면으로 넘어가야 root 비밀번호를 재 설정하는 문제를 풀 수 있지만 부팅시간이 너무 짧아 타이밍을 잡기 어렵다.

VMware Fusion이 꺼진 상태에서 .vmx 설정 파일을 편집하면 부팅시간을 늘릴 수 있다.

  1. VM 패키지(.vmwarevm) 우클릭 → “패키지 내용 보기”
  2. 안에 있는 이름.vmx 파일을 텍스트 편집기로 열기
  3. 내용 추가: bios.bootDelay = "5000”
  4. 저장 후 VM 실행 → 전원 켜면 5초 동안 BIOS/UEFI 화면에서 기다림

설정을 마치고 나서 재시작 누르고 esc키를 연타하면 GRUB 화면으로 쉽게 이동할 수 있다.

 

4. SSH 설정

시험 환경은 로컬에 노드 2개가 있어 노드에서 직접 문제를 풀거나 로컬에서 SSH로 접근하여 문제를 풀 수 있다.

노드에서는 복사 붙여넣기가 안되는 불편함이 있어 SSH 접근을 허용하고 로컬에서 많이 문제를 풀기에 시험 환경과 비슷하게 SSH 접근 불가 상태로 만든다음 SSH 허용할 수 있도록 설정을 해보자.

  1. 노드에 접속 후 명령어 실행 : vi /etc/ssh/sshd_config
  2. permitRootLogin을 yes로 변경 (주석제거 하거나 내용 변경)
  3. 저장 후 명령어 실행 : systemctl restart sshd
  4. sshd enable :systemctl enable —now sshd

ssh_config는 나가는 요청이고, sshd_config는 들어오는 요청의 설정이기에 sshd_config의 설정에서 root 로그인을 허용하면 된다.

 


 

예상 문제

Node1에서 작업

1. Network 설정

IP : 172.24.19.10
SUBNET : 255.255.255.0
GATEWAT : 172.24.19.254
DNS : 172.24.19.2
HostName : node1.example.com
  • nmtui 명령어로 GUI 환경에서 쉽게 변경하면 된다.
  • 설정 후 ip와 hostname이 변경되었는지 확인하고 넘어가자.

 

 

2. 기본 저장 공간 설정 

패키지 저장소 1: http://server1.examample.com/BaseOS
패키지 저장소 2: http://domain6.examample.com/AppStream
# vi /etc/yum.repos.d/redhat.repo

[BaseOS]
name=BaseOS
gpgcheck=0
enabled=1
baseurl=http://server1.examample.com/BaseOS

[AppStream]
name=AppStream
gpgcheck=0
enabled=1
baseurl=http://domain6.examample.com/AppStream

# yum clean all
# yum repolist all

 

 

 

3. 계정 

그룹명이 sharegrp인 그룹 생성
sharegrp에 보조 그룹으로 속한 사용자 natasha 생성
sharegrp에 보조 그룹으로 속한 사용자 harry 생성
시스템에서 대화형 쉘에 대한 액세스 권한이 없으며 sharegrp의 멤버가 아닌 사용자 sarah 생성
natasha, harry, sarah 의 암호는 모두 tripmays 이다.
# groupadd sharegrp

# useradd -G sharegrp natasha

# useradd -G sharegrp harry

# useradd -s /sbin/nologin sarah

# cat /etc/passwd | egrep "natasha|harry|sarah"

# echo 'tripmays' | passwd --stdin natasha

# echo 'tripmays' | passwd --stdin harry

# echo 'tripmays' | passwd --stdin sarah
  • /sbin/nologin은 tab키로 자동 완성이 안되니 알아두자.

 

 

4. selinux 디버깅

httpd의 기본 디렉토리는 /var/www/html/이며 관련 파일 및 디렉토리는 변경 또는 삭제하지않는다.
웹 브라우저를 통해 현재 서버에 접속하여 /var/www/html/ 내 html 파일들이 정상적으로 보여지는지 확인.
httpd의 기본 포트는 82번 포트이며 변경하지 않는다.
서버가 재부팅 될 때 httpd 서비스는 유지.
Listen의 값이 기본 80으로 되어있지만, 만약 제시한 포트번호와 다를경우 변경이 필요하다.

# vi /etc/httpd/conf/httpd.conf
Listen 80 -> Listen 82로 변경

# semanage port -l | grep http_port_t

# semanage port -a -t http_port_t -p tcp 82

# firewall-cmd --permanent --add-port=82/tcp

# firewall-cmd --reload

# systemctl enable --now httpd

 

 

 

5. 파일 권한 설정 

/etc/fstab 파일을 /var/tmp/fstab로 복사합니다.
소유자와 소유 그룹은 root로 설정합니다.
그룹 사용자는 이 파일을 읽기 쓰기 가능하도록 설정합니다.
natasha 사용자는 이 파일을 읽고 쓸 수 있어야 합니다.
harry 사용자는 이 파일을 읽고 편집할 수 없어야 합니다.
나중에 생성된 사용자는 읽기 가능합니다.
# cp -avrp /etc/fstab /var/tmp/fstab

# chown root:root /var/tmp/fstab

# chmod g=rw /var/tmp/fstab

# setfacl -m u:natasha:rw- /var/tmp/fstab

# setfacl -m u:harry:--- /var/tmp/fstab

# chmod o=r /var/tmp/fstab

 

 

 

6. 협업 디렉토리 생성

/home/manager 디렉토리를 생성합니다.
sharegrp 그룹의 사용자만 읽기와 쓰기가 가능합니다.
그 외 다른 사용자는 어떠한 설정도 불가능합니다.
단 root는 모든 작업이 가능합니다.
생성된 파일은 자동적으로 소유 그룹이 sharegrp이 되어야 합니다
# mkdir /home/manager

# chmod 2770 /home/manager

# chgrp sharegrp /home/manager
  • 권한을 줄때 2가 붙는 이유는 SGID(Set Group ID) 비트 설정으로 2가 앞에 붙는다.
  • 여기서도 그룹만 모든 권한이면 070, 소유자도 필요하다면 770으로 권한 이해하자.

 

 

7. 자동 스케줄링 설정

harry 사용자가 14:23에 아래 명령을 실행하도록 설정 /bin/echo hello
# systemctl enable --now crond

# crontab -u natasha -e

23 14 * * * /bin/echo hiya

# crontab -u natasha -l
  • cronie 설치되어있다.
  • 분 시 일 월 요일 순서는 외우자.
  • 만약 3분마다로 출제되면 */3으로 작성하는 법도 알아두자.

 

 

8. sudo (출제 X)

RHCSA 그룹이 sudo 명령어를 사용할 때 비밀번호를 입력하지 않고 사용할 수 있도록 설정
visudo
…
%RHCSA ALL=(ALL) NOPASSWD:ALL


[주의사항]
user가 sudo 명령어를 사용할 때 비밀번호를 입력하지 않고 사용할 수 있도록 설정
user ALL=(ALL) NOPASSWD:ALL

RHCSA그룹이 sudo 명령어를 사용할 때 비밀번호를 입력하지 않고 사용할 수 있도록 설정
%RHCSA ALL=(ALL) NOPASSWD:ALL

유저와 그룹의 차이점을 확인하자.

 

 

 

9. NTP

server1.example.com을 통해 시간이 동기화 되도록 ntp 클라이언트를 구성합니다.
# systemctl enable --now chronyd

# vi /etc/chrony.conf

server server1.example.com iburst

# systemctl enable --now chronyd

# timedatectl

# chronyc sources
  • reboot 후 chronyc sources 명령어의 결과값 확인 가능

 

 

10. 파일 찾기

소유자가 natasha 인 파일을 시스템 전체에서 검색하여 /root/findresults 디렉토리에 복사합니다.
# mkdir /root/findresults

# find / -user natasha -type f -exec cp -avrp {} /root/findresults/ \;

# ls -al /root/findresults

 

 

 

11. 문자열 찾기 (출제 X)

/usr/share/CHANGES에서 문자열 ‘ng’를 포함하는 라인을 모두 찾아
/tmp/search_string 파일에 저장합니다.
원본 순서에 맞게 저장되어야합니다.
/tmp/search_string 파일에 빈 라인이 들어가서는 안됩니다.
# grep ng /usr/share/CHANGES > /tmp/search_string

 

 

 

12. 아카이브 생성

/usr/local에 있는 모든 파일을 /root/backup.tar.gz2 으로 저장합니다.
반드시 gzip2으로 압축되어야 합니다.
# bzip --help

# tar -cvjf /root/backup.tar.gz /usr/local
  • bzip이 없어도 오류없이 압축이 되니 bzip이 있는지 확인
  • bz면 gzip이라 -z를 사용, bz2면 gzip2라서 -j를 사용하는거 확인하자.

 

 

13. umask

사용자 natasha가 파일과 디렉토리를 생성했을 때, 다음과 같은 권한이 되도록 구성하시오.

파일 생성 시 기본 권한: rw-------
디렉토리 생성 시 기본 권한 :rwx------
# vi /home/natasha/.bash_profile

umask 077
  • umask 계산법 공부하고 가자.

 

 

14. Autofs

autofs를 설정하여 원격 사용자의 홈 디렉터리를 아래 요구대로 자동으로 마운트되독록 하세요.

1. materials.example.com (172.25.254.254) 에는 NFS 공유 드렉토리 /rhome 있습니다. 이 파일 시스템에는 사용자 remoteuser1 대해 사전 구성된 홈 디렉터리가 포함됩니다.
2. remoteuser1의 홈 디렉터리는 materials.example.com:/rhome/remoteuser1입니다.
3. remoteuser1의 홈 디렉터리는 로컬의 /rhome 디렉토리 하위의 /rhome/remoteuser1로 자동으로 마운트 되어야 합니다.
4. 홈 디렉터리는 사용자가 쓰기 가능해야 합니다.

remoteuser1의 비밀번호는 flectrag입니다.
1. Autofs 설치 및 서비스 관리
# dnf install -y autofs

# systemctl enable --now autofs

# systemctl status autofs
 

2. Autofs 구성
# vi /etc/auto.master
추가: /rhome/etc/auto.rhome
 
# vi /etc/auto.rhome
추가: remoteuser1  -fstype=nfs4,rw,sync  materials.example.com:/rhome/remoteuser1
 

3. Autofs 서비스 재시작
#systemctl restart autofs
 

4. 확인 검증
# ls /rhome/remoteuser1

# touch /rhome/remoteuser1/testfile

# ls -l /rhome/remoteuser1/testfile
  • 검증에서 사용자가 접근하고 쓰기까지 되면 정상.

 

 

15. 컨테이너 이미지

natasha 사용자로 http://classroom/Containerfile을(를) 다운로드하세요.
이 파일의 내용을 수정하지 말고, 이미지 이름을 pdf로 하여 빌드하세요.
# systemctl enable --now podman

# ssh natasha@node1 또는 server1

# wget http://classroom/Containerfile

# podman build -t pdf .

# podman images
  • 실습에서는 Containerfile을 개인적으로 하나 만들어서 진행하자.

 

 

16. 컨테이너 배포

컨테이너 이름 : ascii2pdf
앞서 생성한 pdf 이미지 사용
수동 개입 없이 시스템 재부팅 시 자동으로 서비스를 시작
컨테이너 시작 시 /opt/file을 /incoming에, /opt/processed를 /outgoing에 자동 마운트
1. 디렉터리 생성 및 권한 설정하고 natasha로 로그인
# sudo mkdir -p /opt/file /opt/processed

# sudo chown natasha:natasha /opt/file /opt/processed

# su - natasha


2. 컨테이너 실행
#podman run -d --name ascii2pdf -v /opt/file:/incoming:Z -v /opt/processed:/outgoing:Z localhost/pdf


3. 컨테이너 상태 확인
# podman ps -a


4. Systemd 유닛 파일 생성 및 저장
# podman generate systemd --name ascii2pdf --files

# mkdir -p ~/.config/systemd/user/

# mv container-ascii2pdf.service ~/.config/systemd/user/


5. Linger 활성화
# loginctl enable-linger natasha


6. Systemd 서비스 관리
# systemctl --user enable --now container-ascii2pdf.service


7. 재부팅 후 검증
# podman ps -a

 

 

 

node2에서 작업

1. root 비밀번호 재설정

재부팅 누른 후 grub menu에서 e 누르기

linux … 맨 끝에 입력 : init=/bin/bash

ctrl+x 누르기

# mount -o rw,remount /

# passwd root

# touch /.autorelabel

# exec /sbin/init
  • 이 작업을 안하면 이 후 node2에서 작업한 모든 문제 0점처리되니 오래걸려도 차분하게 변경하고 넘어가자.

 

 

2. LVM Create

wgroup 볼륨 그룹에서 wshare라는 LVM 이름을 생성합니다. 다음 사항에 유의하세요.

1. PV 크기는 8MB여야 합니다.
2. LVM 크기는 50 익스텐트여야 합니다.
3. "ext4" 파일 시스템으로 포맷하고 /mnt/wshare에 마운트합니다.그러면 다음 재부팅 후 자동으로 마운트됩니다.
1. 디스크 상태 확인
# lsblk


2. 디스크를 LVM 파티션으로 설정
# fdisk /dev/디스크이름

n → p → 1 → Enter → Enter → t → L → 8e → w
L로 리스트중에 LVM을 확인하고 LVM의 값을 입력하자. (8e가 아닐수도 있음)


3. PV 생성
# pvcreate /dev/디스크이름

# pvdisplay


4. VG 생성
# vgcreate -s 8M wgroup /dev/디스크명

# vgdisplay


5. LV 생성
# lvcreate -l 50 -n wshare wgroup

# lvdisplay


6. 파일 시스템 생성
# mkfs.ext4 /dev/wgroup/wshare


7. 마운트 및 자동 마운트 설정
# mkdir /mnt/wshare

# vi /etc/fstab

내용 추가 : /dev/wgroup/wshare /mnt/wshare ext4 defaults 0 0

# mount -a

lsblk

df -h

 

 

 

3. LVM swap

400MB의 스왑 파티션을 생성하고 영구적으로 사용할 수 있도록 합니다.
1. Logical Volume 및 파일 시스템 상태 확인
# lsblk


2. Swap 파티션 생성
# fdisk /dev/디스크이름

# n -> p -> 2 -> Enter -> +400M -> t -> 82 -> w


3. Swap 초기화 및 활성화
# mkswap /dev/sdb2

# swapon /dev/sdb2


4. 자동 마운트 설정
# vi /etc/fstab

/dev/디스크이름 swap swap defaults 0 0

# mount -a
  • 논리 볼륨과 swap 차이를 잘 파악하자.

 

 

4. Tuned

추천된 튜닝 프로필 수정
1. Tuned 서비스 상태 확인 및 활성화
# systemctl status tuned

# systemctl enable --now tuned


2. 추천 Profile 설정
# tuned-adm list

# tuned-adm recommend

# tuned-adm profile virtual-guest


3. 활성화 확인
# tuned-adm active

# tuned-adm profile_info virtual-guest


4. 재부팅 후 확인
# reboot

# tuned-adm active

'Linux' 카테고리의 다른 글

[Linux] RHCSA v9 준비 및 후기  (0) 2025.09.24
[Linux] SSH 에러 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!  (0) 2025.07.05
'Linux' 카테고리의 다른 글
  • [Linux] RHCSA v9 준비 및 후기
  • [Linux] SSH 에러 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
주우운
주우운
CloudOps까지의 과정 기록
  • 주우운
    CloudOps 여행기
    주우운
  • 전체
    오늘
    어제
    • 전체보기 (36)
      • AWS (7)
      • Docker (18)
        • Docker (14)
        • 따배도 (4)
      • Kubernetes (4)
      • IaC (0)
        • Ansible (0)
        • Terraform (0)
      • Linux (3)
      • DB (2)
      • 팁 (2)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.4
주우운
[Linux] RHCSA v9 문제 풀이
상단으로

티스토리툴바