본문 바로가기
Study/리눅스

RHCSA 문제

by yingtao 2025. 3. 10.

1) 네트워크 설정

node1의 네트워크구성을 아래와 같이 변경하세요.

  • Host Name: node1.domain250.example.com
  • IPv4 address: 172.25.250.100
  • Subnet mask: 255.255.255.0
  • Gateway: 172.25.250.254
  • DNS: 172.25.250.254
# hostname 변경
hostnamectl set-hostname node1.domain250.example.com 

# connection 정보조회
nmcli con show

# 기존설정 조회를 통하여 옵션명 확인가능
nmcli con show 'Wired connection 1' |grep -E 'ipv4|autoconn'

# ipv4 설정
nmcli con modify 'Wired connection 1' autoconnect yes ipv4.method manual ipv4.addresses 172.245.250.100/24 ipv4.gateway 172.25.250.254 ipv4.dns 172.25.250.254

# connection active (이미 up된 상태에서는 재구동 역할을 하게됨)
nmcli con up 'Wired connection 1'

# 변경여부 확인 
ip a
  • Wired Connecton 1
    Wired connection 1 대신 nmcli con show로 확인한 NAME 입력

  • autoconnect yes
    시스템 부팅 시 자동으로 연결됨
  • nmcli con up [NAME]
    변경된 네트워크 설정을 적용하고 연결 활성화

 

2) Yum 저장소 설정

YUM 기본 저장소를 아래와 같이 변경하세요.
아래와 같은 YUM 저장소가 사용가능합니다.

YUM 기본저장소를 위에 제공되는 저장소를 사용하도록 시스템을 구성하세요.

vi /etc/yum.repos.d/rhel.repo

>
[BaseOS]
name = BaseOS
baseurl = http://content/rhel9.0/x86_64/dvd/BaseOS
enabled = 1
gpgcheck = 0

[Appstream]
name = Appstream
baseurl = http://content/rhel9.0/x86_64/dvd/Appstream
enabled = 1
gpgcheck = 0
  • enabled = 1
    저장소 활성화 (1 = 사용, 0 = 비활성화)
  • gpgcheck = 0
    GPG 서명 확인 비활성화 (1 = 활성화, 0 = 비활성화)

 

3) Debug SELinux

비표준 포트 82에서 실행 중인 웹 서버가 서비스 제공 시 문제를 겪고 있다. 다음 조건을 충족하도록 트러블슈팅을 하라 :

  • 시스템의 웹 서버가 /var/www/html에 있는 모든 기존 HTML 파일을 제공할 수 있어야 한다. (참고: 기존 파일의 내용을 삭제하거나 수정하지 말것)
  • 웹 서버가 포트 82로 서비스가 되도록 하라
  • 웹 서버가 시스템이 시작될 때 자동으로 시작되어야 한다.
# 웹 서버 상태 확인
systemctl status httpd

# SELinux 파일 컨텍스트 확인 (httpd_sys_content_t 라벨을 가지고 있어야 정상적으로 제공 가능)
ll -Z /var/www/html/

# 파일 컨텍스트 수정
semanage fcontext -m -t httpd_sys_content_t /var/www/html/*
restorecon -Rv /var/www/html

# 82번 포트 허용 (-a : 새로운 포트 추가)
semanage port -a -t http_port_t -p tcp 82

# 방화벽에서 허용
firewall-cmd --permanent --add-port=82/tcp
firewall-cmd --permanent --add-service=http
firewall-cmd --reload

systemctl enable --now httpd
        • SELinux
          보안 정책을 적용하여 비인가된 액세스를 차단하는 보안 모듈
          82번같은 비표준 포트를 사용하는 웹 서버(Apache httpd)가 정상적으로 작동하지 않는 경우, SELinux 및 방화벽 설정을 조정해야 한다.
        • semanage fcontext -m -t httpd_sys_content_t /var/www/html/*
          /var/www/html/디렉토리 내 파일들에 웹 서버가 접근할 수 있도록 SELinux 컨텍스트 변경
        • restorecon -Rv /var/www/html
          /var/www/html에 대한 SELinux 컨텍스트를 다시 적용

 

4) 사용자 계정 관리

아래와 같이 사용자/그룹 생성을 하라.

  • sysmgrs라는 그룹을 생성하세요.
  • natasha 사용자를 생성하고, 보조 그룹으로 sysmgrs에 속하게 하세요.
  • harry 사용자를 생성하고, 보조 그룹으로 sysmgrs에 속하게 하세요.
  • sarah 사용자는 시스템에서 상호작용 shell에 접근할 수 없으며, sysmgrs 그룹의 구성원이 아닙니다.
  • natashaharrysarah의 비밀번호는 모두 flectrag로 설정하세요.
  • -s /usr/sbin/nologin
    사용자가 로그인할 수 없도록 설정
groupadd sysmgrs
useradd -G sysmgrs natasha
useradd -G sysmgrs harry
useradd -s /usr/sbin/nologin sarah

# 비밀번호 생성
echo flectrag | passwd natasha --stdin
echo flectrag | passwd harry --stdin
echo flectrag | passwd sarah의 --stdin

 

5) cronjob 설정

harry 사용자로 매일 14:23에 /usr/bin/echo hello를 실행하는 cron 작업을 설정하라

# crond 서비스 실행 확인 후 active가 아니면 실행하기
systemctl status crond
systemctl enable --now crond

# cron 작업 설정
crontab -u harry -e
>
23 14 * * * /usr/bin/echo hello

# 설정된 cron 작업 확인
crontab -u harry -l
  • cron
    특정 시간에 주기적으로 명령어나 스크립트를 실행할 수 있는 리눅스의 스케줄링 도구

 

6) 협업 디렉토리 생성

다음 특징을 가진 협업 디렉토리 /home/managers를 생성하세요:

  • /home/managers의 그룹 소유자는 sysmgrs여야 합니다.
  • 디렉토리는 sysmgrs 그룹의 구성원만 읽기, 쓰기 및 접근할 수 있으며, 다른 사용자는 이러한 권한을 가지지 않습니다. (물론, root 사용자는 시스템의 모든 파일과 디렉토리에 접근할 수 있습니다.)
  • /home/managers에 생성된 파일은 자동으로 그룹 소유권이 sysmgrs 그룹으로 설정되어야 합니다.
mkdir /home/managers

# 그룹 소유권 변경
chown :sysmgrs /home/managers

chmod g+s /home/managers
    • g+s
      SetGID(Set Group ID) 비트를 설정하는 옵션
      그 디렉토리 안에서 생성되는 모든 파일과 디렉토리의 그룹 소유권이 자동으로 상위 디렉토리의 그룹을 따라가도록 강제됨 

 

7) NTP 설정

시스템을 materials.example.com의 NTP 클라이언트로 구성하세요.

# chronyd 서비스 실행여부 확인 후 실행해주기
systemctl status chronyd
systemctl enable --now chronyd

vi /etc/chrony.conf
> server materials.example.com iburst

systemctl restart chronyd

# 검증
chronyc sources
  • NTP
    시스템 시간을 정확하게 동기화하는 프로토콜
  • server materials.example.com iburst
    server : 시스템이 시간 정보를 가져올 NTP 서버를 설정
    iburst : 초기 동기화 시 8번의 빠른 요청을 보내서 시간을 신속하게 동기화

 

8) autofs 설정

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

  • materials.example.com (172.25.254.254) 에는 NFS 공유 드렉토리 /rhome 있습니다. 이 파일 시스템에는 사용자 remoteuser1 대해 사전 구성된 홈 디렉토리가 포함됩니다.
  • remoteuser1의 홈 디렉토리는 materials.example.com:/rhome/remoteuser1입니다.
  • remoteuser1의 홈 디렉토리는 로컬의 /rhome 디렉토리 하위의 /rhome/remoteuser1로 자동으로 마운트되어야 합니다.
  • 홈 디렉토리는 사용자가 쓰기 가능해야 합니다.
  • remoteuser1의 비밀번호는 flectrag입니다.
# autofs 패키지 설치 및 활성화
dnf -y install autofs
systemctl enable --now autofs

# auto.master 파일 수정
vi /etc/auto.master
>
/rhome /etc/auto.rhome

# auto.rhome 파일 수정
vi /etc/auto.rhome
> 
/remoteuser1 -rw materials.example.com:/rhome/remoteuser1

systemctl restart autofs
          • autofs
            원격 파일 시스템을 자동으로 마운트하고, 필요할 때만 마운트를 해제하는 기능을 제공
            NFS(Network File System) 공유 디렉토리를 필요할 때만 마운트하여 시스템 리소스를 절약할 수 있다.

             materials.example.com 서버에 있는 /rhome/remoteuser1 디렉토리를 로컬 시스템의 /rhome/remoteuser1에 자동으로 마운트하도록 설정하라는 예제
            (
            materials.example.com:/rhome/remoteuser1 : NFS를 사용하여 원격 서버(materials.example.com)의 /rhome/remoteuser1 디렉토리를 로컬 시스템에 마운트하는 경로 )
        • auto.master
          마운트할 디렉토리 경로와 해당 디렉토리에 대해 사용할 설정 파일을 연결한다.
          ( /rhome  /etc/auto.rhome : /rhome 디렉토리에서 /etc/auto.rhome 파일을 사용하여 자동 마운트를 설정하라는 의미)

        • auto.rhome
          특정 디렉토리에 대한 마운트 방법을 지정하는 맵 파일
          /etc/auto.master에서 지정한 디렉토리(/rhome 등)를 기반으로 어떤 원격 서버를 마운트할지 정의
          ( /remoteuser1 -rw materials.example.com:/rhome/remoteuser1 : rhome/remoteuser1 경로를 materials.example.com:/rhome/remoteuser1 경로와 연결하라는 의미)

 

9) 계정 생성

사용자 ID가 3533인 사용자 manalo를 생성하라. 비밀번호는 flectrag.

useradd -u 3533 manalo

echo flectrag | passwd manalo --stdin

 

10)  파일 찾기

jacques가 소유한 모든 파일을 찾아 그 복사본을 /root/findfiles 디렉토리에 넣으세요.

mkdir /root/findfiles
find / -user jacques -exec cp -a {} /root/findfiles \;
    • find / -user jacques -exec cp -a {} /root/findfiles \;
      find / : root 디렉토리(/) 밑 = 시스템 전체에서 검색

      -exec : 찾은 파일을 이용해 특정 명령어(cp) 실행

      cp -a {} : 파일 속성을 유지하며(-a 옵션) /root/findfiles 에 복사
      \; : exec 구문의 끝을 나타냄

 

11) 문자열 찾기 (grep)

파일 /usr/share/xml/iso-codes/iso_639_3.xml에서 문자열 ng가 포함된 모든 행을 찾아 이 모든 행을 원래 순서대로 /root/list 파일에 복사하세요. /root/list에는 빈 행이 없어야 하며, 모든 행은 /usr/share/xml/iso-codes/iso_639_3.xml 파일의 원래 행과 정확히 일치해야 합니다.

grep ng /usr/share/xml/iso-codes/iso_639_3.xml > /root/list

 

12)  아카이브 생성

/usr/local의 내용을 포함하는 tar 아카이브를 생성하고, 이를 bzip2로 압축하여 /root/backup.tar.bz2로 저장하세요.

# 압축
tar -cvjf /root/backup.tart.bz2 /usr/local

# 확인
tar -tf /root/backup.tar.bz2
    • tar
      파일 아카이브를 생성하고 추출하는 데 사용되는 유틸리티
      /usr/local 디렉토리의 모든 파일과 서브디렉토리를 아카이브하고 압축하는 작업을 수행
      • -c: 아카이브 생성 (create)/ 아카이브 파일을 새로 생성
      • -v: 상세 출력 (verbose)/ 아카이브 생성 중에 처리되는 파일들을 콘솔에 표시합니다.
      • -j: bzip2 압축 (bzip2 compression)/ 아카이브 파일을 bzip2 방식으로 압축합니다.
      • -f: 파일 지정 (file)/ 아카이브를 생성할 파일 경로를 지정합니다. 이 경우 /root/backup.tar.bz2로 지정합니다.

 

13) podman - build

  • wallah 사용자로 http://classroom/Containerfile 을(를) 다운로드하세요.
  • 이 파일의 내용을 수정하지 말고, 이미지 이름을 pdf로 하여 빌드하세요.
dnf -y install container-tools
ssh wallah@[node1 IP]

wget http://classroom/Containerfile 

podman login -u admin -p redhat321 registry.lab.example.com
podman build -t pdf .

 

14) podman - container를 systemd로 구성

사용자 wallah로 컨테이너에 대한 systemd 서비스를 구성합니다.

  • 컨테이너 이름: ascii2pdf
  • 앞서 생성한 pdf 이미지를 사용하세요.
  • 수동 개입 없이 시스템 재부팅시 자동으로 서비스를 시작합니다.
  • 컨테이너 시작 시 /opt/file을 /dir1에, /opt/progress를 /dir2에 자동으로 마운트하도록 서비스를 구성합니다.

 

15)  sudo설정

sysmgrs 그룹 구성원이 sudo를 사용할 때 비밀번호를 입력하지 않도록 허용하세요.

 

16)  root비번 설정 (rd.break,init=/bin/bash)

node2의 root 비밀번호를 flectrag로 설정하세요. 이를 수행하려면 시스템 접근 권한이 필요합니다.

 

17)  Yum 저장소 설정

YUM 기본 저장소를 아래와 같이 변경하세요.

아래와 같은 YUM 저장소가 사용가능합니다.

YUM 기본저장소를 위에 제공되는 저장소를 사용하도록 시스템을 구성하세요.

 

18)  LVM - lvextend

논리 볼륨 vo의 파일 시스템 크기를 230MiB로 조정하세요. 파일 시스템의 내용은 그대로 유지되어야 합니다. 참고로, 파티션 크기가 요청된 크기와 정확히 일치하지 않는 경우가 많으므로, 213MiB에서 243MiB 범위의 크기는 허용됩니다.

lvscan

# 논리볼륨 크기 설정
lvextend -L 230M /dev/myvol/vo

# 파일시스템을 논리볼륨 크기에 맞게 조정
resize2fs /dev/myvol/vo

 

 

 

 


해당 문서를 참고하였다.

https://www.geuni.tech/linux/rhcsa_practice/

 

RHCSA 9 연습/기출문제 (EX200) | Geuni's Blog

RHCSA 9 (EX200) 시험 대비를 위한 완벽 가이드! 네트워크 설정, YUM, SELinux, LVM, podman, systemd 등 핵심 주제별 연습 문제 및 상세 해설 제공. rd.break를 이용한 root 비밀번호 복구 방법까지 완벽 정리

www.geuni.tech