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
호스트이름 : server.exercise.local
# hostnamectl set-hostname server.exercise.local
# yum group install "Server with GUI"
# systemctl isolate graphical.target
# systemctl set-default graphical.target
(설정 전 /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가 Enforcing 상태인지 확인하고, 아닐 경우 Enforcing으로 변경하시오.
# cat /etc/selinux/config
시스템에 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 여야됨
네트워크 시간 동기화를 위해 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 로 동기화 확인
웹 서비스를 설치하시오 (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
이전 문제에서 각 디스크에 생성한 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 옵션이 파일시스템 용량도 늘려줌
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/
자동마운트를 설정할 수 있도록 필요한 도구를 설치하시오.
/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