728x90

4. 파일 시스템 생성: mkfs -t ext4 /dev/sdb1

1) mkfs -t ext4 /dev/sdb1

2) mkfs -t xfs /dev/sdb2

 

파티션한 /dev/sdb1 디스크에 ext4 파일 시스템 구성(=포맷)

 

파티션한 /dev/sdb2 디스크에 xfs 파일 시스템 구성

 

 

5. 마운트: mount /dev/sdb1 /test1

1) 마운트할 디렉토리 생성: test1, test2

2) 생성한 디렉토리에 마운트: mount /dev/sdb1 /test1

3) 마운트 정보 확인: lsblk -f

 

mount 명령의 주요 옵션

옵션 설명
-t 마운트할 파일 시스템의 유형 지정(ext2, ext3, ext4, xfs, ...)
-o 파일 시스템 마운트 시, 세부 옵션 지정
- ro: 파일 시스템을 읽기 전용 모드로 마운트
- suid: 파일 시스템 내 파일의 SetUID 설정 사용

 

마운트할 디렉토리 생성 > /test1 마운트 포인트에 /dev/sdb1 파티션 장치 마운트

 

마운트 확인

 

/test1 디렉토리에서 파일 생성 및 확인

 

 

6. 언마운트: umount /dev/sdb1

언마운트 시

1) 장치명 사용: umount /dev/sdb1

2) 마운트 포인트 사용: umount /test1

 

 

장치명을 사용하여 마운트 해제

 

언마운트 후에 /test1 디렉토리에서 생성한 파일을 확인할 수 없음 > 마운트가 해제된 것을 확인할 수 있음

 

마운트 포인트를 사용하여 마운트 해제

 

/dev/sdb1 파티션 장치를 /test1 마운트 포인트에 다시 마운트 > 이전에 생성한 파일 확인

728x90
728x90

3. 파티셔닝: fdisk /dev/sdb

 

1) fdisk -l: 디스크 정보를 확인하고 파티셔닝할 디스크 장치를 식별함

2) fdisk /dev/sdb: 디스크 파티션 구성

3) m: fdisk 내부 명령어 확인(주로 사용: p, q, w, d, m, n, l)

4) p: 파티션 정보 확인

5) n: 새로운 파티션 추가

6) 파티션 종류: p > 파티션 넘버: 1 > 섹터: 2048 > 파티션 크기 설정: +500M

    > 생성한 파티션 정보 확인: p > 구성한 파티션 저장: w

 

 

/dev/sdb 디스크 파티션 구성

 

fdisk의 내부 명령어 확인(주로 사용: p, q, w, d, m, n, l)

 

p: 파티션 정보 확인

 

* mbr은 파티션이 총 4개까지 가능하며 3개까지는 p, 4개 이상부터 e 옵션 선택

파티션 종류: p > 파티션 넘버: 1 > 섹터: 2048 > 파티션 크기 설정: +500M

 

구성할 파티션 옵션 구성

 

생성한 파티션 정보 확인

 

두 번째 파티션 생성

 

[실습1] 파티션 3개 생성: 500, 500, 나머지 용량

 

500MB 파티션 생성 1

 

500MB 파티션 생성 2

 

나머지 용량 파티션 생성 3

 

생성한 파티션 저장: w

 

저장된 파티션 정보 확인: fdisk -l
리눅스 디바이스 정보 출력: lsblk (상세 정보 출력: blkid)

728x90
728x90

* 참고: ova 파일 가져오기

해당 옵션을 선택해야 ova 파일을 가져올 때 충돌이 일어나지 않음

 

 

1. 디스크 설치: 설정 > 저장소

 

가상 머신 설정으로 이동

 

네트워크 설정 확인 1: NAT 네트워크

 

네트워크 설정 확인 2: 호스트 전용 어댑터

 

저장소 > 컨트롤러: SATA 디스크 추가

 

디스크 만들기

 

디스크 만들기 옵션 선택: VDI

 

디스크 용량을 고려하여 동적할당 선택

 

10GB로 설정

 

추가한 디스크 확인

 

디스크가 제대로 추가된 것을 확인할 수 있음

 

 

2. 디스크 인식 확인: fdisk -l

- 추가된 디스크는 대체로 운영체제에서 자동 인식됨

 

fdisk mbr 방식
gdisk gpt 방식

 

설정 변경 후 가상 머신 실행

 

기존 디스크: /dev/sda

새로 추가한 디스크: /dev/sdb

 

fdisk -l > 디스크 정보를 확인하고 파티셔닝할 디스크 장치를 식별함

 

728x90
728x90

리눅스 파일 시스템의 종류

 

파일 시스템

- 파일과 디렉토리의 집합을 구조적으로 관리하는 체계

- 어떤 구조를 구성하여 파일이나 디렉토리를 관리하느냐에 따라 다양한 형식의 파일 시스템이 존재함

 

 

리눅스에서 지원하는 기타 파일 시스템

파일 시스템 기능
msdos MS-DOS 파티션을 사용하기 위한 파일 시스템
iso9660 CD-ROM, DVD의 표준 파일 시스템으로 읽기 전용으로 사용
nfs network file system으로 원격 서버의 디스크를 연결할 때 사용
vfat 윈도 95, 98, NT를 지원하기 위한 파일 시스템
hpfs HPFS를 지원하기 위한 파일 시스템
ntfs 윈도의 NTFS를 지원하기 위한 파일 시스템
sysv 유닉스 시스템V를 지원하기 위한 파일 시스템
hfs 맥 컴퓨터의 hfs 파일 시스템을 지원하기 위한 파일 시스템

 

 

리눅스의 가상 파일 시스템

파일 시스템 기능
swap 스왑 영역을 관리하기 위한 스왑 파일 시스템
tmpfs - temporary file system으로 메모리에 임시 파일을 저장하기 위한 파일 시스템이며, 시스템이 재시작할 때마다 기존 내용이 없어짐
- /tmp 디렉토리를 예로 들 수 있음
proc - proc 파일 시스템으로 /proc 디렉토리
- 커널의 현재 상태를 나타내는 파일을 가짐
ramfs 램 디스크를 지원하는 파일 시스템
rootfs - root file system으로 / 디렉토리
- 시스템 초기화 및 관리에 필요한 내용 관리

 

 

현재 시스템이 지원하는 파일 시스템 확인: /proc/filesystems

* nodev: 해당 파일 시스템이 블록 장치와 연결되어 있지 않다는 의미 (=가상 파일 시스템)

 

 

리눅스 파일 시스템의 구조

 

리눅스의 모든 파일 시스템의 기본 개념

- 파일(디렉토리 포함)은 inode(번호)로 관리됨

- 디렉토리는 단순히 파일의 목록을 가지고 있는 파일일 뿐임

- 특수 파일을 통해 장치에 접근할 수 있음

* b(블록)와 c(캐릭터)는 장치를 의미함

 

 

ext4 파일 시스템의 구조

 

***중요 요소

ext4 슈퍼블록 디스크 핵심 정보
그룹 디스크립터 그룹의 정보
inode 테이블 파일의 메타 데이터
데이터 블록 파일의 실제 데이터

 

 

 

 

728x90
728x90

기본 접근 권한: 664, 775

- 리눅스에서는 파일이나 디렉토리를 생성할 때 기본 접근 권한이 자동으로 설정

- 일반 파일: 664

- 디렉토리: 775

파일과 디렉토리의 기본 접근 권한 확인

 

 

기본 접근 권한 확인하고 변경하기: umask [옵션] [마스크 값]

- 기본 접근 권한 출력 및 변경

- [-S] 옵션: 마스크 값을 문자로 출력

- 루트 사용자 계정의 기본 umask: 0022

- 일반 사용자 계정의 기본 umask: 0002

- 재부팅 후에도 변경된 umask를 적용하기 위해서는 사용자 초기 프로파일에 저장 필요

  > 사용자 초기 프로파일(/etc/profile): ~/.profile, ~/.bash_rc

 

기본 마스크 값 출력: 0002

 

 

마스크 값의 의미

- 파일이나 디렉토리 생성 시 부여하지 않을 권한을 지정해놓는 것

- 마스크 값이 002일 경우, -------w- 기타 사용자에게 쓰기 권한을 부여하지 않겠다는 의미

 

 

마스크 값 변경: umask [mask 값]

 

마스크 값 변경 전: 002

파일과 디렉토리의 기본 접근 권한 확인

 

마스크 값 변경 후: 007

umask 값 변경

 

디렉토리 생성 후 변경된 기본 권한 확인

 

파일 생성 후 변경된 기본 권한 확인

 

특수 접근 권한

- 접근 권한은 원래 4자리이며

- 생략된 맨 앞자리는 특수 접근 권한을 의미함

- 맨 앞자리 숫자가 0이면 일반 접근 권한임

- 1, 2, 4 이면 특수 접근 권한임

맨 앞자리 권한
4 SetUID
2 SetGID
1 스티키 비트

 

SetUID

- 실행할 때 임시로 파일 소유자의 권한으로 실행됨

- 파일에만 설정

- SetUID가 설정되면 소유자의 실행 권한에 's'가 표시됨

 

소유자 실행 권한이 있어 user 사용자 계정에서 passwd 명령어 실행 가능

 

- /etc/shadow 파일은 root 계정으로만 수정 가능

- passwd 명령어는 SetUID가 설정되어 있기 때문에 소유자인 root 권한으로만 실행 가능

 

소유자 실행 권한이 사라져 user 사용자 계정에서 passwd 명령어 실행 권한이 없음

 

 

SetGID

- 실행할 때 임시로 파일 소유 그룹의 권한으로 실행됨

- 파일과 디렉토리 모두 설정 가능

- 단, 디렉토리에 설정한 경우 해당 디렉토리에서 생성한 파일의 소유 그룹은 해당 디렉토리 소유 그룹으로 자동 설정됨

 

 

스티키 비트

- 스티키 비트는 디렉토리에만 설정 가능

- /tmp 디렉토리가 대표적

- 스티키 비트가 설정되면 기타 사용자 실행 권한에 't'가 표시됨

 

스티키 비트가 설정된 /tmp 디렉토리에서 작업

 

- 스티키 비트가 설정되어 있는 디렉토리에는 누구나 파일 및 디렉토리 생성 가능

 

- 파일은 파일을 생성한 계정(user)으로 소유자(user)가 설정되며, 다른 사용자가 생성한 파일은 삭제 불가

 

- 다른 사용자 계정(user02)에서 파일 삭제 불가

 

- 777 권한을 부여해도 다른 사용자 계정(user02)에서는 삭제가 불가함

user 사용자 계정에서 777 권한 부여

 

스티키 모드가 설정되면 권한 적용이 되지 않음을 알 수 있음

 

728x90
728x90

접근 권한의 종류: 읽기, 쓰기 실행

 

***매우 중요 [파일과 디렉토리의 접근 권한]

권한 파일 디렉토리
읽기 파일 읽기 및 복사 ls 명령으로 디렉토리 목록 확인
쓰기 파일 수정, 이동, 삭제
(디렉토리에 쓰기 권한 필요)
파일 생성 및 삭제
실행 파일 실행
(셸 스크립트 및 실행 파일의 경우)
cd 명령으로 파일을 디렉토리로 이동 및 복사

 

 

접근 권한의 표기 방법: r, w, x

 

접근 권한의 표기 방법

 

r w x
읽기 권한 쓰기 권한 실행 권한
-rw r-- r--
소유자 그룹 기타 사용자

 

 

 

접근 권한의 변경 명령: chmod [옵션] [권한 모드 파일 또는 디렉토리]

- 파일이나 디렉토리의 접근 권한 변경

- [-R] 옵션: 하위 디렉토리까지 모두 변경

- 기호 모드와 숫자 모드가 있으며 주로 숫자 모드 이용

 

[실습 1] - 기호 모드

 

1. data 파일 생성

2. 소유자 계정에 data 파일 접근 권한 확인

3. data 파일 실행 권한 없음

4. data 파일에 실행 권한 부여

5. data 파일 실행 성공

 

data 파일에 실행 권한이 없어 실행 불가
실행 권한을 부여해 파일 실행 가능

 

숫자를 이용한 파일 접근 권한 변경

1. r-w 일 경우, 권한이 있는 것은 1, 없는 것은 0

2. 2 진수 1, 0, 1로 변환

3. 2 진수를 각 자릿수 별로 10진수로 환산 > 4, 0, 1

4. 세 숫자를 더함

5. 최종 권한: 5

 

[접근 권한과 숫자의 대응 관계]

숫자 의미
7 읽기, 쓰기, 실행
6 읽기, 쓰기
5 읽기, 실행
4 읽기
3 쓰기, 실행
2 쓰기
1 실행
0 권한이 없음

 

[실습 2] - 숫자 모드

 

1. 소유자 계정에만 읽기, 쓰기 권한 부여

 

2. 소유자, 그룹, 기타 사용자에 읽기 권한만 부여

 

3. 그룹에 실행 권한 부여

 

[실습 3] - 숫자 모드

 

1. 기타 사용자에게 실행 권한을 부여한다.

 

2. 그룹과 기타 사용자의 실행 권한을 제거한다.

 

3. 모두에게 실행 권한을 부여한다.

 

4. 소유자에게 쓰기 권한을 부여하고 그룹의 쓰기 권한은 제거한다.

 

5. 소유자의 권한만 남기고 나머지 사용자의 권한은 모두 제거한다.

 

728x90
728x90

파일 접근 권한 보호

- 리눅스는 파일에 무단으로 접근하는 것을 방지하고 보호하는 기능을 제공함

 

파일의 속성

 

 

속성 값 의미
- 파일의 종류 (-: 일반 파일, d: 디렉터리)
rw-r--r-- 파일을 읽고 쓰고 실행할 수 있는 접근 권한 표시
1 하드 링크의 개수
root 파일 소유자의 로그인 ID
root 파일 소유자의 그룹 이름
2259 파일의 크기(바이트 단위)
날짜 파일이 마지막으로 수정된 날짜
/etc/passwd 파일명

 

파일의 종류: file [파일]

- 지정한 파일의 종류 출력

 

파일 소유자의 그룹 이름: groups [사용자명]

- 사용자가 속한 그룹 출력

 

728x90
728x90

프로세스의 개념

 

프로그램

소스 코드가 빌드되어 실행 가능한 실행 바이너리 파일(보조 기억 장치에 저장된 파일 자체)

 

프로세스

- 현재 시스템에서 실행 중인 프로그램

 

쓰레드

- 프로세스 내에서 실행되는 작업의 단위

 

프로세스의 부모-자식 관계

- 프로세스는 부모-자식 관계를 가짐

 

프로세스의 번호(PID)

- 각 프로세스는 고유한 번호를 가지고 있음

 

프로세스의 종류

- 데몬 프로세스: 백그라운드에서 독립적으로 실행되는 것

- 고아 프로세스: 부모 프로세스가 먼저 종료된 자식 프로세스

- *좀비 프로세스: 프로세스를 종료했음에도 불구하고 프로세스 테이블 목록에 남아있음

   * 버그나 개발의 완성도가 떨어지는 경우 등 좀비 프로세스의 발생 원인은 다양함

 

 

프로세스 관리 명령

 

프로세스 목록 보기: ps

- 현재 실행 중인 프로세스의 목록 출력

- 옵션 없이 사용하는 ps 명령은 현재 쉘이나 터미널에서 실행한 사용자 프로세스에 대한 정보를 출력함

* pts: 가상 터미널, 과거에는 터미널이라는 하드웨어 장비를 연결하여 명령어를 입력하였지만 요즘에는 가상 터미널을 사용함

 

프로세스의 상세 정보 출력: -f 옵션

- 프로세스의 상세한 정보 출력: PPID, 터미널 번호, 시작 시간 등

 

터미널에서 실행한 프로세스 정보 출력: a 옵션

 

터미널에서 실행한 프로세스의 상세 정보 출력: au 옵션

- a 옵션과 u 옵션을 함께 사용하면 터미널에서 실행한 프로세스의 상세 정보를 출력함: 사용자 계정 이름, CPU, 메모리 사용량 등

 

전체 프로세스 목록 출력: -e 옵션

- 시스템에서 실행 중인 모든 프로세스를 출력함

- TTY 값이 ? 인 것은 대부분 데몬으로 시스템이 실행한 프로세스

 

전체 프로세스의 더 자세한 정보 출력: -ef 옵션

 

특정 프로세스의 정보 출력: ps -ef | grep [프로세스 이름]

 

전체 프로세스 목록 출력(BSD 옵션): ax 옵션

- 시스템에서 실행 중인 모든 프로세스 출력

 

시그널 목록 출력: kill -l

- 시그널: 프로세스에 무언가 발생했음을 알리는 메시지

 

프로세스 종료: kill [-시그널] PID

시그널

2 인터럽트 시그널을 보냄
9 프로세스 강제 종료(윈도우에서 작업끝내기와 같은 기능)
15 프로세스와 관련된 파일을 정리한 후 종료함

 

현재 실행 중인 프로세스에 대한 정보를 주기적으로 출력: top

- 프로세스 관리 도구

 

PID 프로세스 ID USER 사용자 계정
PR 우선 순위 NI Nice 값
VIRT 프로세스가 사용하는 가상 메모리의  크기 RES 프로세스가 사용하는 메모리의 크기
SHR 프로세스가 사용하는 공유 메모리의 크기 %CPU 퍼센트로 표시한 CPU 사용량
%MEM 퍼센트로 표시한 메모리 사용량 TIME+ CPU 누적 이용 시간
COMMAND 명령 이름    

 

포그라운드, 백그라운드 프로세스와 작업 제어

 

포그라운드 작업

- 포그라운드 프로세스: 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다려야함

 

sleep 명령이 끝날 때까지 기다려야 함

백그라운드 작업

- 백그라운드 프로세스: 명령을 실행하면 명령의 처리가 끝나는 것과 관계없이 곧바로 프롬프트가 출력되어 사용자가 다른 작업을 계속 할 수 있음

 

프롬프트가 바로 나와 다른 명령을 실행할 수 있음

작업 제어

- 작업 제어는 작업 전환과 작업 일시 중지, 작업 종료를 의미함

작업 전환 포그라운드(백그라운드) 작업에서 백그라운드(포그라운드) 작업으로 전환
작업 일시 중지 작업을 잠시 중단
작업 종료 프로세스를 종료하는 것처럼 작업 종료

 

작업 목록 보기: jobs

 

 

작업 전환하기: bg %[작업 번호]

 

백그라운드에서 포그라운드로 전환
포그라운드에서 백그라운드로 전환

작업 종료하기: ctrl + c

 

로그아웃 후에도 백그라운드 작업 계속 실행하기: nohup

 

작업 예약

단일성 작업 예약 등록: at

 

정해진 시간에 반복 실행: crontab

 

 

* crontab 삭제: crontab -e

 

/var/spool/cron 디렉토리로 가면 사용자별 crontab 설정 파일이 존재함

- 이 파일을 편집해도 crontab 설정 가능

- 그러나 crontab -e 사용을 권장함

 

crontab 명령어를 사용하여 작성하는 cron은 개별 사용자용 크론

 

시스템 차원에서 cron 작업 예약 가능

- /etc/crontab 파일에서 작업 등록- /etc/cron.d/ 디렉토리에 복사 후 파일명 변경

 

crontab 심화학습: crontab -e 사용

1. 매년 1월 첫 번째 일요일에 재부팅이 되도록 설정

0 0 1-7 1 0 systemctl reboot

 

2. 매월 매일 오후 1시부터 5시까지 10분마다 date 명령어를 실행해서 datefile01에 이어쓰기로 저장하도록 설정

*/10 13-17 * * * date >> datefile01

 

> : 덮어쓰기(기존 파일 삭제 후 새 파일 생성)

>> : 이어쓰기(기존 파일에 이어쓰기)

3. 매년 3월, 6월, 9월 두 번째 화요일 14시 20분에 /etc/passwd 파일의 내용을 userfile에 갱신하도록 설정

20 14 8-14 3,6,9 2 cat/etc/passwd > /root/userfile

 

연습문제

1. 매월 1일 새벽 12시 30분에 datefile1에 date 명령어 결과가 이어쓰기로 써지도록 하라

30 0 1 * * date >> datefile1

 

2. 1분마다 date 명령어를 실행해서 datefile2에 이어쓰기로 써지도록 하라

* * * * * date >> datefile2

 

3. 매년 1월 1일 오후 12시에 date 명령어가 datefile3으로 덮어쓰기로 실행되도록 하라

0 12 1 1 * date > datefile3

 

4. 3번 작업만 삭제하려면?

crontab -e

* crontab -r은 권장하지 않음

 

5. 사용자 계정 user가 예약 작업을 하도록 설정

crontab -e -u user

 

엑세스 제어 설정 파일

at

/etc/at.deny

/etc/at.allow

 

crontab

/etc/cron.deny

/etc/cron.allow

 

1. *.allow 파일은 존재하지 않고 *.deny 파일만 존재하면, *.deny 파일에 등록된 사용자는 스케줄링 명령 사용 불가

 

2. *.allow 파일과 *.deny 파일이 둘 다 존재하면 *.allow에 등록된 사용자만 스케줄링 명령 사용 가능

 

3. 둘 다 존재하지 않으면 root만 스케줄링 명령 사용 가능

728x90

+ Recent posts