EnJinnier
Linux Final Lab 본문
다음의 실습들을 직접 해보면서 리눅스를 이해하자.
참고 방식
1. Red Hat 공식문서(리눅스)
2. AWS 공식 문서
3. 명령어 help 보는 습관
4. 블로그(구글링) - 최신 버전 아닐 수 있음 주의 -> 블로그로 이해하고 공식문서 봐도 됨.
기본 세팅
- Region : ap-northeast-2
- AMI ID : ami-01c2597f1a6fac880 (Linux Final Lab v2024.10.04)
- Instance type : t2.medium
- IGW 혹은 NAT GW 사용 환경
- 문제에 지정된 계정 외에는 모든 작업은 root 로 수행이 됩니다.
1. 인스턴스 호스트이름 변경하기 - server1.linux.dom 으로 인스턴스 hostname 을 변경하시오.
sudo hostnamectl set-hostname server1.linux.dom
sudo vi /etc/hosts
127.0.0.1 server1.linux.dom server1
#hostname 입력시 확인 가능
참고
https://repost.aws/ko/knowledge-center/linux-static-hostname
Ubuntu Linux를 실행하는 EC2 인스턴스에 정적 호스트 이름 할당
Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 호스트 이름을 변경했습니다. 하지만 인스턴스를 재부팅하거나 중지한 다음 다시 시작하면 호스트 이름이 원래 호스트 이름으로 다시 변경됩니다.
repost.aws
https://docs.aws.amazon.com/linux/al2/ug/set-hostname.html#set-hostname-system
Change the hostname of your AL2 instance - Amazon Linux 2
Change the hostname of your AL2 instance When you launch an instance into a private VPC, Amazon EC2 assigns a guest OS hostname. The type of hostname that Amazon EC2 assigns depends on your subnet settings. For more information about EC2 hostnames, see Ama
docs.aws.amazon.com
2. /dev/xvdb 에 128M, 100M, 256M, 200M 4개의 파티션을 생성하시오.
#디스크 확인
lsblk
#gdisk 명령을 실행하여 파티션을 생성
gdisk /dev/xvdb
- (2) 문항에서 생성한 128M, 100M, 256M 3개의 파티션을 이용하여 아래와 같이 VG를 생성하시오.
- VG Name: testvg
- PE Size: 10 MB
- VG : Volume Group(볼륨 그룹)
- 파티션으로 PV(physical volume)를 생성한후 PV들을 묶어 VG를 생성해야 한다.
5.2.2. 볼륨 그룹 생성 | Red Hat Product Documentation
형식멀티 페이지단일 페이지모든 문서를 PDF로 표시
docs.redhat.com
https://lifegoesonme.tistory.com/449
[리눅스] LVM 구성 ①편 - PV,VG,LV,FS 생성 및 마운트
Linux LVM 구성(운영) 가이드 · Linux LVM 구성①편 - PV,VG,LV,FS 생성 및 마운트 ← 현재 보고 있는 페이지★ · Linux LVM 구성②편 - PV,VG,LV,FS 운영(증설,삭제) · Linux LVM 구성③편 - LVM 명령어 정리 LVM 구성
lifegoesonme.tistory.com
http://www.chlux.co.kr/bbs/board.php?bo_table=board02&wr_id=48&sca=OS&page=10
클럭스
클럭스, S/W 프로젝트
www.chlux.co.kr
- testvg 에 아래와 같은 정보로 파일시스템을 구성하시오.
- LV Name : test_lv
- LE(Logical Extent) : 20
- Filesystem type : ext4
- Mount Point : /exports/test
- 해당 파일 시스템은 재부팅 후에도 mount 가 되어야합니다.
- LE - LV가 갖는 일정한 블록. LV의 기본 할당 단위
- LE의 용량은 PE의 용량을 따라감. 따라서 -L 옵션 사용시 용량 지정, -l 옵션 사용시 LE의 개수 지정이 됨
- 파일 시스템 생성
: 논리 볼륨에 대해 ext4 파일 시스템을 갖도록 포맷한다.
# lvdisplay 에서 나오는 LV Path를 ext4 타입으로 파일시스템 포맷 한 후 /home 에 마운트 합니다.
mkfs.ext4 [/dev/vg/lv]
mkfs.ext4 /dev/testvg/test_lv
- 마운트 포인트 생성
# 마운트 포인트 생성
$ sudo mkdir -p /exports/test
# 마운트
$ sudo mount /dev/testvg/test_lv /exports/test
# 마운트 확인
$ df -h
- 영구 마운트 설정
- 해당 파일 시스템은 재부팅 후에도 mount 가 되어야합니다. -> 영구 마운트를 설정하여 리부트하고나서도 마운트가 . 잘되는지 확인해야 함
# 디바이스 UUID 확인
$ sudo blkid /dev/testvg/test_lv
# /etc/fstab 편집
$ sudo vi /etc/fstab
# 아래 내용 추가
UUID=<UUID값> /exports/test ext4 defaults 0 0
(UUID값 대신 /dev/testvg/test_lv 를 넣어도 되긴 함. 다만 이렇게 하면 디스크 이름이 변경될 시 문제 발생)
#리부트 후 확인
reboot
lsblk
여기까지가 LVM을 구성하는 과정이었다.
5. 그룹이 sysadm 인 사용자 lab1, lab2 계정을 생성하시오.
사용자 계정 및 그룹을 생성하여 관리해보기
- sysadm 그룹의 gid 는 3999 입니다.
- sysadm 그룹에 속하지 않은 사용자 lab3 을 생성하시오. 단 해당 사용자는 로그인을 할 수 없습니다.
- 모든 사용자의 비밀번호는 amazonkr 입니다.
로그인이 안되게 할건데 왜 유저를 생성하는가?
-> 로그인은 안되지만 프로세스는 돌릴 수 있기 때문에 로그인이 필요없는 유저는 로그인을 보안상 다 막아놓음
# GID 지정하여 생성
groupadd -g 3999 sysadm
#user 생성
useradd -g 3999 lab1
useradd -g 3999 lab2
useradd lab3
#비밀번호 설정/변경
passwd lab1
#사용자 로그인 제한
usermod -s /sbin/nologin lab3
또는 생성부터 useradd -s /usr/sbin/nologin lab3
추가정보) # 계정 잠금/잠금해제
usermod -L username # 잠금
usermod -U username # 잠금해제
6. http://stg.linux.dom:5000/kernel-5.10.224-212.876.amzn2.x86_64.rpm 을 이용하여 server1.linux.dom 의 커널을 업데이트하시오.
(재부팅 후, 신규 커널로 부팅이 되야되고 기존 커널은 유지가 되어야 합니다.)
#wget으로 파일 다운로드
wget http://stg.linux.dom:5000/kernel-5.10.224-212.876.amzn2.x86_64.rpm
yum install kernel-5.10.224-212.876.amzn2.x86_64.rpm (커널 다운로드)
또는 처음부터
yum install http://stg.linux.dom:5000/kernel-5.10.224-212.876.amzn2.x86_64.rpm
#부팅 가능한 커널 버전 확인
grubby --info=ALL | grep ^kernel
#기본 부팅 커널 버전 확인
grubby --default-kernel
7. lab1 계정으로 아래와 같이 cron job 생성하시오.
- 매주 금요일 16시 33분에 job 이 실행이 됩니다.
- 스크립트 : http://stg.linux.dom:5000/lab1_cron.sh
- 문제에서 요구한 cron job 만 (주석도 불가능) 선언 되어야합니다.
- 스크립트 내용 :
- echo "[CRON_TESTD] :$(date)" >> /home/lab1/cronfile
크론 잡이란 리눅스 시스템에서 일정 시간 혹은 일정 순간에 뭔가를 실행할 일이 있을 때 미리 설정해두는 작업이다.
이렇게 설정해두면 그 시간에 서버에 들어가서 . 할필요 없이 crontab 시스템을 활용해 쉽게 처리 가능하다.
/#crontab 사용법 확인
cat /etc/crontab
#wget으로 스크립트 저장 및 위치 이동
mv /root/lab1_cron.sh /home/lab1/
#실행권한 주기
chmod u+x lab1_cron.sh
#lab1으로 접속
sudo su lab1
#crontab 편집기 열기
crontab -e
#매주 금요일 16시 33분에 job 이 실행
33 16 * * 5 /home/lab1/lab1_cron.sh
#job 등록 확인
crontab -l
8. time.windows.com 로 시간이 동기화 되도록 설정하시오.
#파일 열고 아래 문구 추가
vi /etc/chrony.conf
server time.windows.com iburst
#재시작
systemctl restart chronyd
#확인
chronyc -N
9. http://stg.linux.dom:5000/example.html 을 이용하여 nginx 웹서비스를 구성하시오.
(웹서버의 메인 페이지를 example.html 파일로 설정하고 파일 명은 수정이 가능하지만, 파일 내용은 수정을 하면 안됩니다.)
#설치
amazon-linux-extra install nginx1
#nginx 활성화
systemctl enable --now nginx
#상태확인
systemctl status nginx
#nginx의 홈디렉토리로 이동: /usr/share/nginx/html/
cd /usr/share/nginx/html/
# index.html을 example.html로 변경
wget http://stg.linux.dom:5000/example.html
mv example.html index.html
10. labuser 사용자를 아래 정보를 기반으로 생성하시오.
- UID : 1234
- Primary group : sysadm
- Supplemetary group : wheel
- Password : amazonkr
#유저 생성 -g : primary group -G: 보조 그룹
useradd -u 1234 -g sysadm -G wheel labuser
#유저 상태 확인
id labuser
11. /dev/xvdb 에 신규 파티션을 추가해서 120M 크기의 SWAP 영역을 생성하시오.
(생성된 SWAP 은 인스턴스가 재부팅 후에도 자동으로 활성화하도록 설정하시오.)
처음에 extend파티션을 끝까지 잡아놔야만 함.(주 파티션은 최대 4개)
fdisk /dev/xvdb
새로운 파티션을 생성할때 디스크를 사용중이라면 오류가 뜨거나 디스크가 보이지 않을 수 있음
이때 재부팅하거나 partprobe하면 디스크가 보임
partprobe
mkswap /dev/xvdb6
UUID 복사 및
vi /etc/fstab 수정
UUID swap swap defaults 1 1
#swap 활성화
swapon -a
#swap 상태 확인
swapon -s
12. /root/swapfile 이름 으로 200MB swapfile 을 생성하고 SWAP 영역을 추가하시오.
(생성된 SWAP 은 인스턴스가 재부팅 후에도 자동으로 활성화하도록 설정하시오.)
#파일 생성
dd : 디스크 관련 명령어
dd if=/dev/zero of=swapfile bs=200 count=1
#확인
du -h *
#swap 생성
mkswap /root/swapfile
#권한 낮추기
chmod 600 /root/swapfile
#fstab 설정
vi /etc/fstab
/root/swapfile swap swap defaults 1 1 (구문 추가)
13. /root/word 안에 full 이라는 단어가 들어간 라인을 /root/word.found 에 저장하시오.
- 소문자 "full" 이라는 단어가 포함된 라인만 추출합니다. 그 외 단어는 제외합니다.
마우스를 쓰지않고 추출해보자
grep으로 full단어를 찾아 리다이렉션으로 바로 found 파일로 넣어줄 수 있음
이때, >가 1개이면 찾은 문장만 넣고 >>가 2개이면 이어붙여서 넣음
cat word | grep " full" > word.found
14. /usr 하위에 `labuser` 계정의 권한을 가진 파일을 찾아 해당 목록을 /root/lab1.filelist 에 저장하시오.
- 명령어 한줄로 해결하시오.
#find 사용
find /usr -user labuser > lab1.filelist
15. /usr/local 을 /root/backup.tar.gz 이름으로 아카이빙 하시오.
#백업하기 - tar는 권한도 같이 백업받을 수 있음
tar cvzf backup.tar.gz /usr/local
16. /data/ 파일시스템을 (2기가)로 증설 하시오.
growpart /dev/xvda 2 (2는 파티션 넘버임)
17. server1.linux.dom 에는 nfs 파일 시스템이 존재합니다. 아래 정보에 맞게 mount 하고 재부팅 후에도 사용 가능하게 설정하시오.
- nfs server hoatname : nfs.linux.dom
- nfs server side mount point : /nfs
- client side : /exports/nfs
mkdir /exports/nfs
showmount -e nfs.linux.dom
mount nfs.linux.dom
nfs.linux.dom:/nfs /exports/nfs nfs _netdev 1 1
어렵당........
리눅스 공부 열심히 해야겠다