[Node1]
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
1
2
3
4
5
6
7
8
9
10
11
12
13
# 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.25.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
2、Yum 저장소 설정
YUM 기본 저장소를 아래와 같이 변경하세요.
아래와 같은 YUM 저장소가 사용가능합니다.
- http://content/rhel9.0/x86_64/dvd/BaseOS
- http://content/rhel9.0/x86_64/dvd/Appstream
YUM 기본저장소를 위에 제공되는 저장소를 사용하도록 시스템을 구성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vim /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
# 변경여부 확인
dnf repolist -v
혹은 dnf config-manager
사용가능, config-manager사용시 생성된 repo파일에 gpgcheck = 0
수동으로 추가해주도록.
1
2
dnf config-manager --add-repo 'http://content/rhel9.0/x86_64/dvd/BaseOS'
dnf config-manager --add-repo 'http://content/rhel9.0/x86_64/dvd/Appstream'
3. Debug SELinux
비표준 포트 82에서 실행 중인 웹 서버가 서비스 제공 시 문제를 겪고 있다. 다음 조건을 충족하도록 트러블슈팅을 하라 :
- 시스템의 웹 서버가 /var/www/html에 있는 모든 기존 HTML 파일을 제공할 수 있어야 한다. (참고: 기존 파일의 내용을 삭제하거나 수정하지 말것)
- 웹 서버가 포트 82로 서비스가 되도록 하라
- 웹 서버가 시스템이 시작될 때 자동으로 시작되어야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# httpd서비스 상태 확인
systemctl status httpd
# file context확인
ll -Z /var/www/html/
semanage fcontext -m -t httpd_sys_content_t /var/www/html/file1
restorecon -Rv /var/www/html
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
# 서비스 구동 및 enable처리
systemctl enable --now httpd
4. 사용자 계정 관리
아래와 같이 사용자/그룹 생성을 하라.
- sysmgrs라는 그룹을 생성하세요.
- natasha 사용자를 생성하고, 보조 그룹으로 sysmgrs에 속하게 하세요.
- harry 사용자를 생성하고, 보조 그룹으로 sysmgrs에 속하게 하세요.
- sarah 사용자는 시스템에서 상호작용 shell에 접근할 수 없으며, sysmgrs 그룹의 구성원이 아닙니다.
- natasha, harry, sarah의 비밀번호는 모두 flectrag로 설정하세요.
1
2
3
4
5
6
7
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. cron job설정
harry 사용자로 매일 14:23에 /usr/bin/echo hello를 실행하는 cron 작업을 설정하라
1
2
3
4
5
6
systemctl status crond
systemctl enable --now crond
crontab -u harry -e
23 14 * * * /usr/bin/echo hello
# job list확인
crontab -u harry -l
6. 협력 디렉토리 생성
다음 특징을 가진 협업 디렉토리 /home/managers를 생성하세요:
- /home/managers의 그룹 소유자는 sysmgrs여야 합니다.
- 디렉토리는 sysmgrs 그룹의 구성원만 읽기, 쓰기 및 접근할 수 있으며, 다른 사용자는 이러한 권한을 가지지 않습니다. (물론, root 사용자는 시스템의 모든 파일과 디렉토리에 접근할 수 있습니다.)
- /home/managers에 생성된 파일은 자동으로 그룹 소유권이 sysmgrs 그룹으로 설정되어야 합니다.
Setting Special Permissions
- Symbolic : setuid = u+s; setgid = g+s; sticky = o+t
- Octal : In the added fourth preceding digit; setuid = 4; setgid = 2; sticky = 1
1
2
3
4
5
6
7
mkdir /home/managers
chown :sysmgrs /home/managers/
chmod 2770 /home/managers/
# 혹은
chmod 770 /home/managers/
chmod g+s /home/managers/
7. NTP설정
시스템을 materials.example.com의 NTP 클라이언트로 구성하세요.
1
2
3
4
5
6
7
8
9
10
systemctl status chronyd
systemctl enable --now chronyd
vim /etc/chrony.conf
# 추가
server materials.example.com iburst
# 서비스 재구동
systemctl restart chronyd
# 체크
chronyc sources
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입니다.
1
2
3
4
5
6
7
8
9
10
dnf -y install autofs
systemctl enable --now autofs
vim /etc/auto.master
/rhome /etc/auto.rhome
vim /etc/auto.rhome
/remoteuser1 -rw materials.example.com:/rhome/remoteuser1
systemctl restart autofs
9. 계정 생성
사용자 ID가 3533인 사용자 manalo를 생성하라. 비밀번호는 flectrag.
1
2
useradd -u 3533 manalo
echo flectrag | passwd manalo --stdin
10. 파일 찾기 (find)
jacques가 소유한 모든 파일을 찾아 그 복사본을 /root/findfiles 디렉토리에 넣으세요.
1
2
mkdir /root/findfiles
find / -user jacques -exec cp -a {} /root/findfiles \;
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 파일의 원래 행과 정확히 일치해야 합니다.
1
grep ng /usr/share/xml/iso-codes/iso_639_3.xml > /root/list
12. 아카이브 생성
/usr/local의 내용을 포함하는 tar 아카이브를 생성하고, 이를 bzip2로 압축하여 /root/backup.tar.bz2로 저장하세요.
1
2
3
4
5
tar -cvjf /root/backup.tart.bz2 /usr/local
# 압축내역 확인
tar -tf /root/backup.tar.bz2
13. podman - build
wallah 사용자로 http://classroom/Containerfile 을(를) 다운로드하세요. 이 파일의 내용을 수정하지 말고, 이미지 이름을 pdf로 하여 빌드하세요.
1
2
3
4
5
dnf -y install container-tools
ssh wallah@node1
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 이미지를 사용합니다.
서비스 이름은 container-ascii2pdf로 하고, 시스템이 재부팅될 때 자동으로 개입 없이 시작되도록 설정하세요.
서비스는 시작 시 /opt/file을 컨테이너 내의 /dir1에 마운트하고, /opt/progress를 컨테이너 내의 /dir2에 마운트하도록 구성하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 디렉토리 생성 및 소유자 변경
sudo mkdir /opt/{file,progress}
sudo chown wallah:wallah /opt/{file,progress}
podman run -d --name ascii2pdf -v /opt/file:/dir1:Z -v /opt/progress:/dir2:Z pdf
# systemd unit파일생성 및 지정위치로 이동
podman generate systemd -n ascii2pdf -f --new
mkdir -p .config/systemd/user
mv ~/container-ascii2pdf.service ~/.config/systemd/user/
# 서비스 구동 및 활성화
systemctl --user daemon-reload
systemctl enable --now --user container-ascii2pdf
loginctl enable-linger
loginctl show-user wallah
# check
exit
reboot
ssh wallah@node1
podman ps
15. sudo설정
sysmgrs 그룹 구성원이 sudo를 사용할 때 비밀번호를 입력하지 않도록 허용하세요.
1
2
3
4
5
6
7
8
9
echo '%sysmgrs ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/sysmgrs-group
# 혹은
visudo
# append해주도록
%sysmgrs ALL=(ALL) NOPASSWD: ALL
# check
su - natasha
sudo cat /etc/shadow
[Node2]
16. root비번 설정 (rd.break,init=/bin/bash)
node2의 root 비밀번호를 flectrag로 설정하세요. 이를 수행하려면 시스템 접근 권한이 필요합니다.
rd.break
,init=/bin/bash
두가지 풀이법이 있다.
참고로 rd.break가 안먹힌다고 하는 소문이 있으나, RH134 교재내용에서는 rd.break방식에 대한 언급밖에 없다. 안될 이유가?
일단 rd.break, init=/bin/bash 두가지 풀이법 모두 익숙하도록
원본 교재내용 참고:
To access that root shell, follow these steps:
- Reboot the system.
- Interrupt the boot-loader countdown by pressing any key, except Enter.
- Move the cursor to the rescue kernel entry to boot (the one with the word rescue in its name).
- Press e to edit the selected entry.
- Move the cursor to the kernel command line (the line that starts with linux).
- Append
rd.break
. With that option, the system breaks just before the system hands control from the initramfs to the actual system.- Press Ctrl+x to boot with the changes.
- Press Enter to perform maintenance when prompted.
rd.break
방식 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# grub menu -> rescue kernel 선택 -> e클릭, rescue kernel이 안보일때 일반적으로 기본kernel이 같은 기능을 해줄수 있음.
# linux로 시작하는 행끝에 rd.break 추가
rd.break
# ctrl + x
# rw 모드로 다시 mount
mount -o remount,rw /sysroot
# 파일 시스템의 루트 변경
chroot /sysroot
# 비밀번호 설정
echo flectrag |passwd root --stdin
# relabel
touch /.autorelabel
# exit chroot
exit
# exit initramfs
exit
init=/bin/bash
방식 :
1
2
3
4
5
6
7
8
9
10
11
12
13
# grub메뉴에서 e클릭
# linux로 시작하는 행끝에 init=/bin.bash 추가
init=/bin.bash
# ctrl + x
# rw 모드로 다시 mount
mount -o remount,rw /
# 비밀번호 설정
echo flectrag |passwd root --stdin
# relabel
touch /.autorelabel
# 시스템 구동
exec /sbin/init
17. Yum 저장소 설정
YUM 기본 저장소를 아래와 같이 변경하세요.
아래와 같은 YUM 저장소가 사용가능합니다.
- http://content/rhel9.0/x86_64/dvd/BaseOS
- http://content/rhel9.0/x86_64/dvd/Appstream
YUM 기본저장소를 위에 제공되는 저장소를 사용하도록 시스템을 구성하세요.
Node1 2번 문제 참고, Node1에서 생성된 repo파일 scp 명령으로 가져와두 됨
18. LVM - lvextend
논리 볼륨 vo의 파일 시스템 크기를 230MiB로 조정하세요. 파일 시스템의 내용은 그대로 유지되어야 합니다. 참고로, 파티션 크기가 요청된 크기와 정확히 일치하지 않는 경우가 많으므로, 213MiB에서 243MiB 범위의 크기는 허용됩니다.
1
2
3
4
# List all logical volumes in all volume groups
lvscan
lvextend -L 230M /dev/myvol/vo
resize2fs /dev/myvol/vo
19. Swap partition
시스템에 512MiB의 추가 스왑 파티션을 추가하세요. 스왑 파티션은 시스템이 부팅될 때 자동으로 마운트되어야 합니다. 시스템에 있는 기존 스왑 파티션은 삭제하거나 변경하지 마세요.
1
2
3
4
5
6
7
8
9
10
11
# fdisk나 parted 편한 명령어를 사용하면 되나
# RH134 교재를 보더라도 Redhat에서는 parted툴을 밀고 있으니 parted 명령어에 익숙해지자.
parted /dev/vdb unit mib print
parted /dev/vdb mkpart my-swap linux-swap 722MiB 1234MiB
parted /dev/vdb print
mkswap /dev/vdb3
vim /etc/fstab
/dev/vdb3 swap swap defaults 0 0
systemctl daemon-reload
swapon -a
swapon --show
20. LVM - lvcreate
qa라는 이름의 논리 볼륨을 qagroup 볼륨 그룹에 생성하고, 크기는 60개의 익스텐트 블록으로 설정하세요. qagroup 볼륨 그룹 내 논리 볼륨의 익스텐트 블록 size는 16MiB여야 합니다. 새 논리 볼륨을 vfat 파일 시스템으로 포맷하고, 시스템 부팅 시 /mnt/qa에 자동으로 마운트되도록 설정하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 60PEs x 16MiB = 960MiB , pv 크기는 960M보다 커야 된다. (넉넉히 잡아주도록)
# start position확인
parted /dev/vdb unit mib print
# 퍼티션 생성
parted /dev/vdb mkpart primary 1235mib 2500mib
# pv생성
pvcreate /dev/vdb4
# vg생성 및 블록size를 16M로 지정
vgcreate qagroup -s 16M /dev/vdb4
# lv생성 및 블록size 지정
lvcreate -n qa -l 60 qagroup
# 파일시스템 생성
mkfs.vfat /dev/qagroup/qa
mkdir /mnt/qa
vim /etc/fstab
/dev/qagroup/qa /mnt/qa vfat defaults 0 0
systemctl daemon-reload
mount /mnt/qa
# check
mount |grep /mnt/qa
21. tuned
시스템에 권장되는 tuned 프로파일을 선택하고 기본 설정으로 설정하세요.
1
2
3
4
5
6
7
8
9
10
11
12
# 설치 및 구동
dnf install -y tuned
systemctl enable --now tuned
# active profile확인
tuned-adm active
# 권장 profile확인
tuned-adm recommend
# 권장 profile 지정
tuned-adm profile virtual-guest
# 체크, active profile 다시 확인
tuned-adm active