728x90

사용자 및 그룹 정보 파일

 

1. 사용자: 실제로 시스템을 사용하려는 사람과 연결된 계정

2. UID

 1) 사용자 번호

 2) 같은 UID를 사용할 경우 같은 사용자로 식별함

 3) 그러나 중복 UID는 보안상 문제를 초래할 수 있으므로 주의

3. 그룹

1) 기본 그룹: 모든 사용자는 최소 하나의 그룹에 소속되어야 함, 필수

2) 보조 그룹: 사용자가 소속되는 또 다른 그룹, 필수 X

 

 

사용자 계정 관련 파일

 

1. /etc/passwd

 

- 시스템에 등록된 사용자 정보를 저장함

- 사용자 계정 정보 구성

 

root x 0 0 root /root /bin/bash
로그인 ID x UID GID 설명 홈 디렉토리 로그인 쉘
사용자 계정의 이름 사용자의 패스워드를 저장하는 필드 사용자 식별 번호(0: root, 1000이후: 일반 사용자) 그룹 식별 번호 사용자 계정에 대한 주석 홈 디렉토리의 절대 경로 기본 사용 쉘

 

2. /etc/shadow

 

- 사용자 암호에 관한 정보 관리

- root 계정으로만 내용 확인 가능

- /etc/shadow 파일의 구조

 

USER HASH LASTCHANGE MIN MAX WARNING INACTIVE EXPIRE BLANK
사용자 이름 해시 알고리즘을 사용하여 생성된 암호 마지막 변경 날짜 최소 사용 기간 최대 사용 기간 만료전 경고 메시지 출력 암호 만료 후 지정된 시간 내로 변경하지 않으면 계정 잠금 계정 만료일 예약된 필드

 

3. /etc/group

 

- 그룹에 대한 정보

- /etc/group 파일의 구조

 

그룹 이름 x GID 그룹 멤버
그룹의 이름 그룹의 암호를 저장 그룹 식별 번호 그룹에 속한 사용자 계정 이름

 

 

사용자 계정 관리 명령

 

1. 사용자 계정 생성: useradd [옵션] [로그인 ID]

 

옵션 설명
-u UID 지정
-o UID 중복 허용
-g [gid] 기본 그룹의 GID 지정
-G [gid] 보조 그룹의 GID 지정
-d [디렉토리명] 홈 디렉토리 지정
-s [쉘] 기본 쉘 지정
-m - 사용자의 홈 디렉토리가 존재하지 않을 경우 생성
- /etc/login.defs 파일의 CREATE_HOME 항목이 yes 로 설정되어야 함, 그렇지 않을 경우 생성되지 않음
-c 설명
-D 기본 값 설정 및 출력
-e [유효 기간] EXPIRE 항목 설정
-f [기간] INACTIVE 항목 설정

 

[실습 1] 옵션을 지정하여 사용자 계정 생성하기

 

1) 사용자 이름: test

2) uid: 2000

3) gid: 1000

4) 보조 그룹: 3

 

 

[실습 2] 옵션을 지정하여 사용자 계정 생성하기

 

1) 사용자 이름: user03

2) uid: 2000

3) 기본 그룹: 10

4) 홈 디렉토리: /home/guest/user03

5) 기본 쉘: /bin/sh

 

 

2. 사용자 생성 시 기본 값 설정: useradd -D

 

1) 기본 설정 항목들은 /etc/default/useradd 파일에 저장됨

 

 

2) 기본 설정 항목

 

 

GROUP HOME INACTIVE EXPIRE SHELL SKEL CREATE_MAIL
기본 그룹 홈 디렉토리의 생성 경로 -1: INACTIVE 비활성화
0: 암호 만료 시 바로 계정 잠금
계정 종료일 기본 로그인 쉘 홈 디렉토리에 복사할 기본 환경 파일의 경로 메일 디렉토리의 생성 여부

 

728x90
728x90

root 패스워드 복구 실습

 

1) systemd 시스템에서 root 패스워드를 복구 할 때 램 디스크 초기화 단계에서 진행

2) 램 디스크 초기화 단계에선 루트 파일 시스템이 /sysroot에 임시로 마운트 되어 있음

3) 읽기 전용으로 마운트 되어 있기 때문에 읽기-쓰기로 다시 마운트 작업 필요

 

 

1. 부트 로더에서 부팅할 커널 항목 선택

 

1) 시스템 부팅 시 방향키를 눌러 커널 항목을 선택

2) 선택된 커널 항목에서 'e'키를 눌러 커널의 설정 값 수정

 

 

 

2. 선택된 커널 항목 편집: rd.break 추가

 

1) linux16으로 시작하는 라인의 마지막에 rd.break 추가

2) rd.break: 램 디스크 초기화를 중단하는 옵션

3) 옵션 추가 후에는 ctrl + x 를 눌러 switch_root# 쉘로 진입

 

해당 위치에 rd.break 추가

 

 

3. 루트 파일 시스템 읽기-쓰기로 다시 마운트

 

1) 램 디스크 초기화 단계에서는 루트 파일 시스템이 /sysroot에 읽기전용으로 마운트 되어 있어 읽기-쓰기로 다시 마운트

2) mount -o rw,remount /sysroot

 

 

 

4. root 패스워드 지정

 

1) chroot: 루트 디렉토리를 변경하는 명령어

2) /sysroot를 루트 디렉토리로 변경

3) passwd: 패스워드 변경

4) chroot /sysroot

 

 

 

5. 자동 레이블 부여 파일 생성

1) chroot 명령을 사용하여 루트 디렉토리를 변경하게 되면 파일에 대한 레이블 정보가 전부 제거됨

2) 따라서 파일에 대한 레이블을 재지정 필요

3) /.autorelabel 파일을 빈 파일로 생성하면 시스템이 부팅 될 때 이 파일을 발견하고 파일에 대한 레이블을 자동으로 부여함

4) 파일에 대한 레이블이 종료되면 해당 파일은 삭제되고 root 패스워드가 복구됨

5) touch /.autorelabel

6) exit

7) exit

 

 

728x90
728x90

리눅스 시스템의 부팅 과정

1) 전원 ON

 

2) 바이오스 단계

- PC에 장착된 기본적인 하드웨어의 상태를 확인한 후 부팅 장치를 선택하여 부팅 디스크의 첫 섹터에서 512 바이트를 로딩함

- 512 바이트: 마스터 부트 레코드(MBR)

- MBR는 부트 로더를 메모리에 적재함

 

3) 부트 로더 단계

- 부트 로더는 부팅할 운영 체제를 선택할 수 있도록 메뉴 제공

- 부트 로더는 리눅스 커널을 메모리에 로딩

 

4) 커널 초기화 단계

- 커널은 가장 먼저 시스템에 연결된 메모리, 디스크, 키보드, 마우스 등 장치들을 검사

- 기본적인 초기화 과정이 끝나면 커널은 fork를 사용하지 않고 생성되는 프로세스와 스레드를 생성함

 

5) systemd 서비스 단계

- 기존의 init 스크립트를 대체한 것으로 다양한 서비스를 동작시킴

- 부팅 메시지 출력, 부트 스플래시 화면 출력

 

6) 로그인 프롬프트 출력

 

 

systemd 서비스

 

1) 리눅스의 init 런레벨

런레벨 의미 관련 스크립트의 위치
0 시스템 종료 /etc/rc0.d
1, S 단일 사용자 모드 /etc/rc1.d
2 다중 사용자 모드(NFS를 실행하지 않음) /etc/rc2.d
3 다중 사용자 모드(NFS 포함) /etc/rc3.d
4 사용하지 않음(예비 번호) /etc/rc4.d
5 X11 상태로 부팅 /etc/rc5.d
6 재시작 /etc/rc6.d

 

2) systemd의 기본 개념

 

- CentOS7부터 본격적으로 기존의 init 스크립트를 대체하기 시작함

- 거의 대부분의 서비스가 systemd 기반으로 변경됨

- systemd 방식의 장점: inetd와 호환성 유지, 셸과 독립적으로 부팅 가능, 마운트 제어 가능, fsck 제어 가능, SELinux와 통합 등

 

3) systemd 유닛

 

- systemd는 전체 시스템을 시작하고 관리하는 데 유닛(units)이라 부르는 구성 요소 사용

- 관리 대상 이름 형태: 서비스 이름.서비스 종류

 

4) systemctl

 

- systemd를 제어함

- 형식: systectl [옵션] [명령] [서비스명]

 

- 옵션

 

옵션 설명
-a 상태와 관계없이 서비스 전체 출력
-t 지정한 종류의 서비스만 출력

 

- 명령어

 

명령어 설명
start 서비스 시작
stop 서비스 정지
reload 서비스의 설정 파일을 다시 읽어옴
restart 서비스 재시작
status 서비스 상태 출력
enable 부팅 시 서비스가 시작하도록 설정
disable 부팅 시 서비스가 시작하지 않도록 설정
is-active 서비스가 동작하고 있는지 확인
is-enabled 서비스가 시작되었는지 확인
isolate 지정한 서비스 및 이와 관련된 서비스만 시작하고 나머지는 정지
kill 서비스에 시그널 전송
mask, unmask 서비스 잠금, 해제

 

 

리눅스 시스템의 종료

 

1) shutdown [시간] [메시지]

 

- 옵션

옵션 기능
-k 실제로 시스템을 종료하는 것이 아니라 사용자들에게 메시지만 전달
-r 종료 후 재시작
-h 종료하며 halt 상태로 이동
-f 빠른 재시작으로 이 과정에서 fsck 생략 가능
-c 이전에 내렸던 shutdown 명령 취소
[시간] 종료할 시간(hh:mm, +m, now)
[메시지] 모든 사용자에게 보낼 메시지

 

2) halt, poweroff, reboot

- 시스템을 종료하거나 재시작하기 위해 사용하는 명령어

- systemctl 명령의 심볼릭 링크

- /var/log/wtmp 파일에 시스템 종료 기록을 남김

 

- 옵션

옵션 기능
-n 재시작이나 종료 전에 sync를 호출하지 않음
-w 실질적으로 재시작하거나 종료하지는 않지만 wtmp 파일에 기록을 남김
-d wtmp 파일에 기록을 남기지 않음
-f 강제로 명령을 실행하며 shutdown을 호출하지 않음
-p 시스템의 전원을 끔

 

3) runlevel 0, 6

 

 

 

 

데몬 프로세스

 

1) 데몬

- 리눅스 백그라운드에서 동작하면서 특정한 서비스를 제공하는 프로세스

 

2) 데몬의 동작 방식

- 독자형: 시스템의 백그라운드에서 서비스별로 항상 동작, 자원 낭비 우려

- 슈퍼 데몬: 평소에는 슈퍼 데몬만 동작 > 서비스 요청 시 슈퍼 데몬이 해당 데몬을 동작 시킴, 응답 시간이 느리지만 효율적인 자원 사용

 

3) 주요 데몬

 

데몬 기능
crond 주기적으로 실행하도록 예약한 명령 실행
dhcpd 동적으로 IP 주소를 부여하는 서비스 제공
httpd 웹 서비스 제공
nfs 네트워크 파일 시스템 서비스 제공
smtpd 메일 전송 데몬
syslogd 로그 기록 서비스 제공
ftpd 파일 송수신 서비스 제공

 

728x90
728x90

* LVM 심화 실습-1에서 찍어두었던 스냅샷으로 복원하여 작업 진행

2. 볼륨 그룹, 논리 볼륨 확장 및 제거

 

1. pv, vg, lv 생성

1) 디스크 정보 확인: fdisk -l 

 

 

2) 물리 볼륨 생성: sdb1, sdb2, sdb3, sdb4

 

3) 볼륨 그룹 생성: mvvg

 

4) 논리 볼륨 생성: lv01, lv02, lv03

 

5) 볼륨 정보 확인

 

 

 

2. 파일 시스템 생성

 

 

 

3. 마운트

 

1) 마운트 포인트 확인

 

 

2) 마운트

 

 

3) 마운트 정보 확인

 

 

 

4. vg, lv 확장

- 논리 볼륨 확장 후에 파일 시스템도 확장해주어야 함

- 사람이 키가 크면 옷이 맞지 않는 것과 같기 때문에

- 파일 시스템은 종류에 따라 다른 명령어 사용

파일 시스템 종류 명령어
xfs xfs_growfs
ext4 resize2fs

 

 

1) mvvg 볼륨 그룹에 /dev/sdb3 추가

 

 

2) lv01 논리 볼륨 5G로 확장

 

 

3) xfs 파일 시스템 확장

 

 

4) lv02 6G로 확장

 

 

 

5) ext4 확장

 

 

6) 정보 확인

 

 

 

5. /dev/sdb4 볼륨 그룹 제거

 

- 볼륨 그룹 축소는 확장과 달리 준비 단계 필요: 물리 볼륨 이동

- 볼륨 그룹에서 사용 중인 물리 볼륨의 데이터를 다른 물리 볼륨으로 이동시키지 않고 디스크를 제거할 경우 데이터 손실 가능성이 높아짐

- 따라서 여분의 물리 볼륨에 데이터를 이동시켜야 함

 

1) 물리 볼륨 옮기기

* 에러 확인: 물리 볼륨의 공간 부족으로 옮기기에 실패

 

 

2) 볼륨 그룹 확장 후에 물리 볼륨 옮기기

 

 

3) /dev/sdb4 제거

 

728x90
728x90

1. 물리 볼륨(PV), 볼륨 그룹(VG), 논리 볼륨(LV) 생성

 

사전 실습 환경 구성

1) 하드디스크 추가: 21GB

2) 파티셔닝: 4GB, 4GB, 6GB, 6GB

3) 파티션 Id: 8e

 

 

 

lvm 명령어

1) pvcreate [장치명]

2) vgcreate [vg명] [pv명]... -s [PE 사이즈]

3) lvcreate [vg명] -n [lv명] -L [실제 크기], -l [PE 갯수]

 

4) 물리 볼륨 삭제: pvremove [pv명]

5) 볼륨 그룹 삭제: vgremove [vg명]

6) 논리 볼륨 삭제: lvremove [lv경로]

 

7) 볼륨 그룹 확장: vgextend [vg명] [pv명]...

8) 볼륨 그룹 축소: vgreduce [vg명] [pv명]

9) 물리 볼륨 내용 이동: pvmove [pv명]

10) 논리 볼륨 확장: lvextend [lv경로(장치명)]

10-1) lvextend lv경로(장치명) -r: 논리 볼륨 확장과 파일 시스템 확장이 자동으로 됨

 

11) xfs 파일 시스템 확장: xfs_growfs [마운트 포인트]

12) ext4 파일 시스템 확장: resize2fs [lv 경로]

 

 

1. 물리 볼륨 생성: /dev/sdb1, /dev/sdb2, /dev/sdb3, /dev/sdb4

 

 

 

2. 볼륨 그룹 생성: vg0

 

 

 

3. 논리 볼륨 생성: lv01, lv02

 

 

 

4. 논리 볼륨에 xfs 파일 시스템 생성 후 마운트

1) 파일 시스템 생성: lv01, lv02

2) 마운트: disk1, disk2

 

 

 

5. 논리 볼륨에 xfs 파일 시스템 생성 후 마운트: lv03, disk3

 

 

 

6. 생성한 lv, vg, pv 모두 삭제

*생성할 때와 반대 순서로 삭제 진행

 

1) 마운트 모두 해제

 

2) 논리 볼륨 제거

 

3) 볼륨 그룹 제거

 

4) 물리 볼륨 제거

 

 

7. 현재 상태 스냅샷 찍기

728x90
728x90

가상 메모리

- 가상 메모리 = 물리 메모리(RAM) + 스왑(디스크 장치에 생성되는 영역)

- 페이지 인(SWAP> RMA): 프로세스가 스왑 영역에 존재할 경우, 스왑 영역의 데이터리 물리 메모리 영역으로 이동시키는 작업

- 페이지 아웃(RAM > SWAP): 물리 메모리에 위치한 프로세스의 우선순위가 낮을 경우, 물리 메모리를 스왑 영역으로 이동시키는 작업

- 페이징: 페이지 인 + 페이지 아웃

 

스왑 명령어

1) 스왑 공간 확인: free

2) 스왑 공간은 일반적으로 메모리의 두 배 정도 할당해줌

3) 스왑 파일 시스템: mkswap /dev/sdb1

4) 수동 스왑 마운트: swapon /dev/sdb1

5) 수동 스왑 마운트 해제: swapoff /dev/sdb1

6) (/etc/fstab)설정된 스왑 모두 마운트: swapon -a

7) 모든 스왑 마운트 해제: swapoff -a

 

 

스왑 영역 구성

1. 파티션id: swap

2. 스왑 파일 시스템으로 포맷

3. 파티션 스왑 활성화

4. 스왑 마운트

 

 

0. 사전 실습 환경 설정

 

1) 모두 언마운트: umount /mnt/lvm

 

 

2)  파티션 모두 지우기: fdisk /dev/sdb > d

 

 

3)  파티션 생성: n

 

 

 

1. 파티션 Id를 swap으로 변경: t > 1 > 82 > w > probepart /dev/sdb

1) 파티션 Id 변경: 82(swap)

 

파티션 Id 변경 후 저장

 

2) 파티션 생성 후 partprobe 명령어 입력: partprobe /dev/sdb

- 재부팅없이 파티션을 인식하는 명령어

 

* 에러 확인:  이전에 생성한 lvm을 삭제하지 않아서 재부팅을 요청하는 에러

 

 

2. 스왑 영역 생성: mkswap /dev/sdb1

파티션 장치를 지정하여 스왑 영역 생성

 

 

3. /dev/sdb1 파티션 스왑 영역 활성화: swapon /dev/sdb1

스왑 용량 확인 명령어

1) free -h

2) swapon -s

스왑 용량이 확장된 것을 확인할 수 있음

 

 

4.  /dev/sdb2, /dev/sdb3 파티션 스왑 영역 활성화: /etc/fstab에 등록

 

/etc/fstab 파일에

 

스왑 활성화 및 비활성화 실행 후 스왑 정보 확인

728x90
728x90

LVM의 기본 개념

1) LVM은 독립적으로 구성된 디스크 파티션을 하나로 연결하여 한 파티션처럼 사용할 수 있도록 함

2) 논리 볼륨 구성

 

물리 볼륨 볼륨 그룹 논리 볼륨
- 디스크 전체 또는 일부를 파티션으로 지정하고 그 파티션으로 물리 볼륨을 생성함 - 1개 이상의 물리 볼륨의 집합으로 구성
- 사용할 수 있는 볼륨 그룹의 총 사이즈는 해당 볼륨 그룹에 포함된 물리 봄륨 사이즈의 합
- 볼륨 그룹 생성 시 PE 크기 지정
- 기본 PE 크기: 4MB
- 파일 시스템에서 데이터를 저장할 수 있는 볼륨을 생성하는 단계
- 논리 볼륨의 최대 크기는 볼륨 그룹의 최대 크기만큼 지정 가능

 

 

논리 볼륨의 장점

 

1. 디스크 파티션의 구조와 상관없이 원하는 크기의 논리 볼륨을 생성할 수 있음

 -> 단일 디스크의 크기보다 큰 볼륨 생성 가능

 

2. 논리 볼륨으로 생성된 볼륨의 사이즈가 부족할 경우 볼륨을 확장할 수 있음

 -> 볼륨 내의 데이터를 그대로 유지한 상태에서 볼륨 확장 가능

 

3. 데이터를 유지한 상태에서 논리 볼륨을 구성하고 있는 디스크를 제거하는 것이 가능

 

4. 논리 볼륨 생성 시 RAID를 적용한 볼륨 생성 가능

 

5. 스냅샷 기능을 사용할 수 있음

 

 

논리 볼륨 생성 과정

 

1. 기존 파일 시스템의 종류 변경(83 > 8e): fdisk /dev/sdb > t

2. PV 생성: pvcreate /dev/sdb1 > pvscan

3. VG 생성: vgcreate grp1 /dev/sdb1 /dev/sdb2 > vgdisplay grp1

4. VG 활성화(생략해도 무관)

5. LV 생성: lvcreate -l 248 grp1 -n mylvm1

6. LV에 파일 시스템 생성: mkfs.ext4 /dev/grp1/mylvm1 > vgdispaly -v 

7. LV 마운트: mkdir /mnt/lvm > mount /dev/grp1/mylvm /mnt/lvm

 

파일 시스템 정보 확인

1) lsblk -f

2) blkid

3) df -Th

 

실습 사전 환경 설정

1) /dev/sdb1 500MB

2) /dev/sdb2 500MB

3) 모두 언마운트

 

파일 시스템에 손상이 있는 경우

디스크 검사(파일 시스템 검사): fsck

 

백업 슈퍼블록으로 슈퍼블록이 깨졌을 때 복구하기

1) dumpe2fs 장치명

2) fsck -b 32768 장치명

 

 

1. 기존 파일 시스템의 종류 변경(83 > 8e): fdisk /dev/sdb > t

- 물리 볼륨을 생성하기 위한 파티션 생성

- 파티션 타입을 'Linux LVM'으로 설정

   * 파티션 타입을 정확하게 설정하지 않을 경우, RAID 형태의 논리 볼륨을 생성할 때 정상적으로 사용할 수 없음

 

파티션 타입 변경: 83(Linux) > 8e(Linux LVM)

 

 

 

**에러 확인: 아래 에러는 마운트되어 있어서 발생하는 에러로 언마운트 해줘야 함

 

 

2. PV 생성: pvcreate /dev/sdb1 > pvscan

- 물리 볼륨 생성: pvcreate

- 물리 볼륨 삭제: pvremove /dev/sdb1 /dev/sdb2

- pvcreate 명령을 사용해 /dev/sdb1과 /dev/sdb2 를 물리 볼륨으로 변환

 

/dev/sdb1과 /dev/sdb2 물리 볼륨 생성

 

생성한 볼륨 정보 확인

 

 

3. VG 생성: vgcreate grp1 /dev/sdb1 /dev/sdb2 > vgdisplay grp1

- 볼륨 그룹 생성: vgcreate

- 볼륨 그룹 삭제: vgrmove grp1

- -s 옵션: 볼륨 그룹의 PE 크기를 지정할 때 사용

 

grp1 볼륨 그룹 생성

 

생성한 볼륨 그룹에서 확인이 필요한 정보 (-v: 상세 정보)

 

 

5. LV 생성: lvcreate -l 248 grp1 -n mylvm1

- 논리 볼륨 생성: lvcreate

- 논리 볼륨 삭제: lvremove

- -l: 생성할 논리 볼륨의 크기 지정 (PE 개수 지정)

- -L: 생성할 논리 볼륨의 크기 지정 (사이즈 지정)

- -n: 생성할 논리 볼륨의 이름 지정

- 생성된 논리 볼륨 정보 확인: lvscan

 

* 해당 실습에서는 vg(grp1)를 통째로 lv(mulvm) 생성

논리 볼륨 생성 및 정보 확인

 

 

6. LV에 파일 시스템 생성: mkfs.ext4 /dev/grp1/mylvm1 > vgdispaly -v 

 

논리 볼륨에 파일 시스템 생성

 

볼륨 그룹 정보 확인

 

 

7. LV 마운트: mkdir /mnt/lvm > mount /dev/grp1/mylvm /mnt/lvm

- 마운트할 디렉토리 생성

- 생성한 디렉토리에 마운트

 

728x90
728x90

파일 시스템 테이블: /etc/fstab

1) mount 명령을 사용한 마운트는 시스템 재부팅 시 모두 해제됨

2) 시스템 재부팅 후에도 마운트를 유지하기 위해서는 특정 파일에 파일 시스템에 대한 마운트 정보 등록 필요

3) 특정 파일: /etc/fstab

 

 

[실습] 파일 시스템 테이블에 마운트 정보를 등록하여 시스템 재부팅 후에 마운트가 자동으로 되는지 확인

 

마운트 모두 해제

 

/etc/fstab 파일에 마운트 정보 등록

 

-a 옵션: 파일 시스템 테이블에 등록된 항목 중 마운트 되지 않은 항목을 마운트하는 옵션
파일 시스템 등록 후 즉시 파일 시스템 마운트된 것을 확인할 수 있음

 

시스템 재부팅

 

시스템 재부팅 후 자동으로 마운트된 것을 확인

 

* 마운트 확인 후에는 다른 실습을 위해 /etc/fstab 파일에 추가한 정보 모두 제거하고 모두 언마운트하여 환경 설정 초기화

728x90

+ Recent posts