ENCORE CLOUD ARCHITECTURE TIL 3/24 Linux CentOS 실습 문제

신민창·2021년 3월 25일
0

TIL

목록 보기
30/46

초기 부팅문제 해결

root 패스워드 설정 : P@ssw0rd
부팅 문제 해결

e
rd.break
# mount -o rw,remount /sysroot
# chroot /sysroot
# passwd
# vi /etc/fstab
파일 수정
# touch /.autorelabel
# exit
# exit

변경할 네트워크 정보

vmware nat 네트워크 설정 확인 (192.168.100,0/24)
NetworkManager 연결 이름: static
IP: 192.168.100.100
netmask : 255.255.255.0
gateway: 192.168.100.2
DNS: 8.8.8.8

# nmcli connection add con-name static ifname ens33 type ethernet ipv4.addresses 192.168.100.100/24 ipv4.gateway 192.168.100.2 ipv4.dns 8.8.8.8 ipv4.method manual

# nmcli connection up static

호스트이름 설정 및 GUI로 변경

호스트이름 : server.exercise.local

# hostnamectl set-hostname server.exercise.local

# yum group install "Server with GUI"
# systemctl isolate graphical.target
# systemctl set-default graphical.target

YUM repository 설정

(설정 전 /etc/yum.repos.d/ 디렉토리 내 *.repo 파일 삭제 후 진행)
http://ftp.kaist.ac.kr/CentOS/8/BaseOS/x86_64/os/
http://ftp.kaist.ac.kr/CentOS/8/AppStream/x86_64/os/

# rm -f /etc/yum.repos.d/*
# vi /etc/yum.repos.d/exam.repo
[Base]
name=Base repo
baseurl=http://ftp.kaist.ac.kr/CentOS/8/BaseOS/x86_64/os/
gpgcheck=0
enabled=1

[AppStream]
name=Appstream repo
baseurl=http://ftp.kaist.ac.kr/CentOS/8/AppStream/x86_64/os/
gpgcheck=0
enabled=1

# yum repolist

SELinux 설정

SELinux가 Enforcing 상태인지 확인하고, 아닐 경우 Enforcing으로 변경하시오.

# cat /etc/selinux/config

systemd journal 설정

시스템에 systemd journal이 영구저장하도록 되어있는지 확인하시오.
영구저장설정이 되어 있지 않을 경우, journal을 영구저장하도록 설정하시오.

# ls -ld /run/log/journal/
# ls -l /run/log/journal/

# mkdir /var/log/journal
# chmod 2755 /var/log/journal/
# chown root systemd-journal /var/log/journal/
# ls -l /run/log/journal/
-> 여기 파일 없어야됨
# ls -ld /var/log/journal/
-> 여기 있어야됨

# systemctl status systemd-journald 
-> active 여야됨

NTP 설정

네트워크 시간 동기화를 위해 time.bora.net 서버를 유일한 시간 동기화 서버로 등록하고, 정상적으로 시간이 동기화되는지 확인하시오.

# systemctl status chronyd.service
-> 있어야됨 없으면 yum install chronyd , systemctl start chronyd.service
# timedatectl
# vi /etc/chrony.conf
3번째줄 주석처리 후
server time.bora.net	iburst
추가

# systemctl restart chronyd.service
# chronyc sources -v 로 동기화 확인

웹 서비스 설치 (SELinux 관련 문제 해결)

웹 서비스를 설치하시오 (httpd)
웹서비스에서 사용할 컨텐츠를 제공하기 위한 /webfile 디렉토리를 생성하고, 디렉토리 내에 index.html 파일을 작성하시오.
웹 서비스의 기본 페이지가 /webfile 경로의 파일을 사용하여 7777/TCP 포트에서 서비스를 제공하도록 설정하시오
웹 서비스를 시작하고, 재부팅 후에도 시작되도록 설정하시오.
curl 또는 웹 브라우저를 사용하여 localhost:7777 페이지가 표시되는지 확인하시오
정상적으로 페이지가 표시되지 않을 경우, 문제를 해결하시오.

# yum -y install httpd
# mkdir /webfile
# cat > /webfile/index.html
helloworld

# vi /etc/httpd/conf/httpd.conf
Listen 7777
DocumentRoot "/webfile"
<Directory "/webfile">

# semanage fcontext -l | grep '/var/www'
# semanage fcontext -a -t httpd_sys_content_t '/webfile(/.*)?'
# restorecon -Rv /webfile/
# semanage port -l | grep http_port_t -> 포트 확인
# semanage port -a -t http_port_t -p tcp 7777
# semanage port -l |grep 7777 -> 확인
# systemctl restart httpd
# curl localhost:7777

사용자 설정

다음 사용자를 추가하시오. 이 사용자는 sudo 명령어를 사용할 수 있도록 설정하시오.
admin
다음 그룹을 추가하시오
administrators (GID: 9999)
다음 사용자의 보조 그룹을 administrators로 지정하여 생성하시오
manager1, manager2, manager3
다음 사용자를 추가하시오. 이 사용자는 UID 50000번으로 생성하며, 로그인하지 못하는 사용자로 지정하시오.
svcadmin
각 사용자의 암호는 모두 P@ssw0rd로 설정하시오

# useradd -G wheel admin
# groupadd -g 9999 administrators
# useradd -G administrator manager1
# useradd -G administrator manager2
# useradd -G administrator manager3
# useradd -u 50000 -s /sbin/nologin svcadmin
# echo P@ssw0rd | passwd --stdin admin
# echo P@ssw0rd | passwd --stdin manager1
# echo P@ssw0rd | passwd --stdin manager2
# echo P@ssw0rd | passwd --stdin manager3
# echo P@ssw0rd | passwd --stdin svcadmin

공유폴더 설정

root 계정으로 /project/webcontents 디렉토리를 생성하시오
webcontents 경로의 소유그룹을 administrators 로 변경하시오
root 사용자와 administrators 그룹의 사용자를 제외하고 디렉토리에 진입할 수 없도록, 디렉토리 내에 administrators 그룹에 소속된 사용자가 파일을 생성할 수 있도록 설정하시오.
/project/webcontents 디렉토리에 생성되는 파일의 소유 그룹이 administrators가 되도록 설정하시오.

# mkdir -p /project/webcontents
# chgrp administrators /project/webcontents
# ls -l /project/webcontents
# chmod 770 /project/webcontents
# chmod 2770 /project/webcontents <or> # chmod g+s /project/webcontents

파일 권한 설정

root 사용자로 /etc/passwd 파일을 /tmp 디렉토리에 복사하시오
/tmp/passwd 파일에 대해 administrators 그룹의 읽기/쓰기 권한을 설정하시오.
root 사용자로 /share 디렉토리를 생성하고, administrators 그룹이 이 디렉토리에 읽기,쓰기,실행 권한을 가지도록, 그리고 이 디렉토리에 만들어지는 파일도 administrators 그룹이 읽기,쓰기,실행 권한을 가지도록 설정하시오.

# cp /etc/passwd /tmp
# ls -l /tmp/passwd
# setfacl -m g:administrators:rw /tmp/passwd
# getfacl /tmp/passwd -> 확인
# mkdir /share
# setfacl -m g:administrators:rwx /share
# setfacl -m d:g:administrators:rwX /share
# getfacl /share/

작업 예약

manager1 사용자로 다음 작업을 예약하시오
매 주 일요일 자정에 현재 시스템의 메모리 사용량(free)을 /tmp/freemem 파일로 저장하시오
manager2 사용자로 다음 작업을 예약하시오
매달 1일 아침 7시에 현재 시스템의 저장소 사용현황 (df -h)을 /tmp/storage.txt 파일로 생성하시오.

# su - manager1
$ crontab -e -> 작업 생성 확인

0 0 * * 0 free > /tmp/freemem
분/ 시간/ 일/ 월/ 요일/ 작업 내용
$ crontab -l -> 확인
$ exit
# su - manager2
$ crontab -e
0 7 1 * * df -h > /tmp/storage.txt
$ crontab -l -> 확인
$ exit

디스크 파티셔닝 구성

/dev/sda 장치에 다음 파티션을 추가하시오
LVM 용도, 10G
/dev/sdb 장치에 MBR 파티션을 생성하시오
1번 파티션 : ext4 파일시스템, 2G
2번 파티션 : LVM 용도, 10G
위에서 생성한 각 파티션을 다음과 같이 설정하시오.
1번 파티션 : /ext4에 마운트, 재부팅시에도 마운트되도록 설정
/dev/sdc 장치에 GPT 파티션을 생성하시오.
1번 파티션 : LVM 용도, 10G

# file -s /dev/sda
# fdisk /dev/sda
n
enter
+10G

p -> 로 확인
t
6 -> 방금 추가한 파티션
L -> 코드 확인
8e -> LVM 코드
w -> 저장

# partprobe -> 변경된 내용 적용
# ls -l /dev/sda6


# fdisk /dev/sdb
n
p
1
enter
+2G

n
p
2
enter
+10G

t
2 -> 방금 추가한 파티션
L -> 코드 확인
8e -> LVM 코드
w -> 저장



w

# ls -l /dev/sdb*
# mkfs -t ext4 /dev/sdb1
# blkid -> sdb1 번 장치 uuid 복사
UUID="186fe6f9-ff03-46d2-a594-62865d7ee278" TYPE="xfs" PARTUUID="ab111157-02"
# vi /etc/fstab -> 마지막 줄에 추가
UUID= ~~~~~ /ext4	ext4 defaults	0 0

# mkdir /ext4
# mount -a 
# mount | grep /dev/sdb1 -> 마운트 확인


# gdisk /dev/sdc
n
1
enter
+10G
L -> 타입 확인
8e00

w
Y

LVM 구성

이전 문제에서 각 디스크에 생성한 10G 파티션을 사용하여 LVM을 구성하시오
볼륨 그룹 이름 : vg_alpha
볼륨 그룹의 PE Size : 10M
vg_alpha 볼륨 그룹에서 다음 논리볼륨을 생성하시오 (PE크기에 따른 오차 허용)
이름: lv1 크기: 1G
이름: lv2 크기: PE 300개
각 논리 볼륨을 다음과 같이 설정하시오
lv1 : xfs 파일시스템으로 구성. /lvm/1에 마운트
lv2 : ext4 파일시스템으로 구성. /lvm/2에 마운트
각 볼륨은 시스템 부팅 시 자동으로 마운트되도록 설정

# pvcreate /dev/sda6 /dev/sdb2 /dev/sdc1
# vgcreate -s 10M vg_alpha /dev/sda6 /dev/sdb2 /dev/sdc1
# vgs
# vgdisplay vg_alpha
# lvcreate -n lv1 -L 1G vg_alpha
# lvcreate -n lv2 -l 300 vg_alpha

# mkfs -t xfs /dev/vg_alpha/lv1
# mkfs -t ext4 /dev/vg_alpha/lv2
# mkdir -p /lvm/{1,2}

# vi /etc/fstab
/dev/vg_alpha/lv1		/lvm/1		xfs		defaults		0 0
/dev/vg_alpha/lv2		/lvm/2		ext4		defaults		0 0

# mount -a
# mount | tail -2

논리 볼륨 관리

현재 사용중인 vg_alpha의 PV중 /dev/sda에 있는 PV를 볼륨 그룹에서 제거하시오.
/dev/sdc 장치에서 5G 파티션을 생성하여 vg_alpha에 포함시키시오.
lv1 논리 볼륨의 크기를 2G로 변경하시오.

# pvs -> pv 상태 확인
# pvmove /dev/sda6
# pvs
# vgreduce vg_alpha /dev/sda6
# vgs

gdisk /dev/sdc
n
2

+5G
8e00

w
y

# pvcreate /dev/sdc2
# vgextend vg_alpha /dev/sdc2
# vgs

# lvextend /dev/vg_alpha/lv1 -L 2G -r
-r 옵션이 파일시스템 용량도 늘려줌

nfs 연결

nfsserver.zip 파일을 다운로드한 후, vmware에서 불러오시오
(root / P@ssw0rd)
다음과 같이 네트워크 설정을 작성하시오.
NetworkManager 연결 이름: static
IP: 192.168.100.200
netmask : 255.255.255.0
gateway: 192.168.100.2
DNS: 8.8.8.8
192.168.100.100 시스템에서 nfsserver 시스템에서 사용가능한 nfs 공유를 확인하시오
nfs 서버에서 공유되고 있는 /shares 디렉토리를 /nfsmount 경로에 읽기전용으로 마운트하시오.

server # nmcli connection add con-name static ifname ens33 type ethernet 
ipv4.addresses 192.168.100.200/24 ipv4.gateway 192.168.100.2 ipv4.dns 8.8.8.8 ipv4.method manual

server # nmcli connection up static

server # cat /etc/exports

# yum -y install nfs-utils
# showmount -e 192.168.100.200

# mkdir /nfsmount
# mount -t nfs 192.168.100.200:/shares /nfsmount/
# ls -l /nfsmount/

nfs 자동마운트

자동마운트를 설정할 수 있도록 필요한 도구를 설치하시오.
/rhome 경로를 생성하고, /rhome이 nfsserver의 /rhome 경로의 디렉토리를
자동 마운트하도록 설정하시오.
새로운 사용자 ruser1을 UID 10001으로 생성하시오. 이 때, 사용자의
홈 디렉토리는 /rhome/ruser1을 사용하도록 작성하시오.

# yum -y install autofs
# cat > /etc/auto.master.d/rhome.autofs
/rhome		(탭 두번)/etc/rhome.indirect
server # exportfs
# cat > /etc/rhome.indirect
ruser1 	-rw,sync		192.168.100.200:/rhome/ruser1    -> 애만 써도 됌
*	-rw,sync		192.168.100.200:/rhome/&                 -> 둘중에 하나만 써도됌

# mkdir /rhome
# systemctl start autofs
# systemctl enable autofs
# mount | tail -1 -> 마운트 설정 확인
# cd /rhome/ruser1   -> 권한 문제 나옴
# useradd -u 10001 -d /rhome/ruser1 -M ruser1

0개의 댓글