[1과목: 리눅스 운영 및 관리]
1. 파일 시스템 관련 명령어
1. 0. 리눅스 기본 명령어
- #pwd
: 현재 작업중인 경로 확인 - #ls
:현재 디렉터리의 파일 및 하위 디렉터리 확인- #ls: 현재 디렉터리의 파일 및 하위 디렉터리 확인
- #ls -l: 파일 및 하위 디렉터리의 권한, 파일 크기 등 상세 내용 확인
- #ls -a: 숨겨진 파일 및 하위 디렉터리 확인
- #ls -all: 숨겨진 파일 및 하위 디렉터리의 상세 내용 확인
- #cd
: 현재 작업중인 경로 변경- cd: 홈 디렉터리로 경로 변경
- cd ..: 상위 디렉터리로 경로 변경
- cd [디렉터리명]: 특정 디렉터리로 경로 변경
- #cat [파일명]
: 파일의 내용을 텍스트 형태로 출력 - #tail -n [출력 행 수] [파일명]
: 파일의 마지막 행을 기준으로 출력 *default = 10줄 - #touch [파일명]
: 공백의 파일 생성 - #mkdir [디렉터리명]
: 새 디렉터리 생성 - rm [파일명]
: 파일 제거 - #rmdir [디렉터리명]
: 디렉터리 제거 - #mv [파일명] [변경할 파일명] [이동할 디렉터리명]
: 파일의 이름을 변경하거나, 다른 위치로 이동 - #cp [파일명] [복사할 파일명] [복사할 디렉터리명]
: 파일을 복사 - #man [명령어]
: 명령어에 대한 도움말
1. 1. 권한 및 그룹 설정
1. 1. 1. 소유권 관련 명령어 ★
#ls -al
: 현재 디렉터리의 파일 및 하위 디렉터리의 권한, 파일 크기 등 상세 확인
drw-rw-r– | 1 | name | group | 22 | 2024-03-04 | 15:13 | myfile |
---|---|---|---|---|---|---|---|
① | ② | ③ | ④ | ⑤ | ⑥ | ⑦ |
d | rw- | rw- | r– |
---|---|---|---|
파일유형 | 소유자 접근 권한 | 그룹 접근 권한 | 기타 사용자 접근 권한 |
① 파일 허가권. 파일유형(d)과 파일 접근권한(소유자:o, 그룹:g, 기타사용자:o)으로 구성
② 물리적 파일 연결 개수
③ 파일 소유자 명
④ 파일 그룹 명
⑤ 파일 크기(byte)
⑥ 마지막 수정일
⑦ 파일명
cf) ⓛ필드는 허가권(Permission), ③,④ 필드는 소유권(ownership)과 관련
#chown ★★★
: 파일이나 디렉터리의 소유권 변경
#chown [옵션] [계정명]:[그룹명] [파일명]
[옵션]
-R: 디렉터리의 내부 파일 및 하위 디렉터리의 소유권 변경
chown yb:user test.txt # test.txt파일의 소유자는 yb, 소유그룹은 user로 설정 chown -R root myfile # myfile디렉터리의 모든 파일과 하위 디렉터리의 소유자를 root로 변경
#chgrp ★★★
: 파일이나 디렉터리의 소유그룹 변경
#chgrp [옵션] [그룹명] 파일명]
[옵션]
-R: 디렉터리의 내부 파일 및 하위 디렉터리의 소유그룹 변경
chgrp user test.txt # text.txt의 소유그룹을 user로 변경
1. 1. 2. 허가권 관련 명령어 ★
#chmod ★★★
: 파일이나 디렉터리의 접근권한 변경
#chmod [옵션] [모드] [파일명]
[옵션]
-R: 하위에 위치한 파일과 디렉터리 권한 변경
-v: 현재 실행되고 있는 모든 파일 확인
-c: 실제로 변경된 파일들만 자세하게 출력
[모드] – 문자열모드
레퍼런스 | 연산자 | 권한 |
---|---|---|
u: 사용자 g: 그룹 o: 기타사용자 a: 모두 | +: 허가권 부여 -: 허가권 제거 =: 허가권 지정 | r: 읽기 w: 쓰기 x: 실행하기 |
chmod u+w test.txt #u(사용자)에게 w(쓰기)권한 추가 chmod u=rwx, o=r test.txt #u(사용자)는 모든 권한을, o(기타 사용자)는 r(읽기)만 가능
[모드] – 8진법 모드
기호 | 숫자(2진수) | 숫자(8진수) |
---|---|---|
— | 000 | 0 |
00x | 001 | 1 |
… | … | … |
rwx | 111 | 7 |
chmod 777 test.txt # 모든 사용자엑 모든 권한 부여 chmod 775 test.txt # 사용자에게 모든 권한을, 그룹에게 읽기,실행하기를, 기타사용자에게 읽기,실행하기 권한을 부여
#umask ★★★
: 파일이나 디렉터리 생성 시 초기 접근권한 설정
- 파일의 default 권한: 666
- 디렉터리의 default 권한: 777
- 파일이나 디렉터리 생성 시 디폴트 권한 값에서 umask값을 뺀 값을 기본 허가권으로 설정
umask #기본 umask값 확인 umask -S #기본 umask값을 문자로 확인 umask 002 #파일의 권한: 666-002=664, 디렉터리의 권한: 777-002=775
1. 1. 3. 특수권한 ★
SetUID / SetGID ★★★
- 프로세스가 실행되는 동안 해당 프로세스의 root권한을 임시로 가져오는 기능
- 사용자가 사용할 때만 소유자/그룹 권한으로 실행
sticky bit ★★★
- 일반적으로 공용 디렉터리를 사용할 때 설정. 기타 사용자(x)에 t로 표기
- /tmp 디렉터리에 기본적으로 설정되어 있음
- Sticky bit가 설정되어 있는 디렉터리의 내용은 파일의 소유자와 root만 변경 가능
- 누구든 접근 가능하며, 특정 응용프로그램이 다른 응용프로그램에서 생성한 파일을 삭제하지 못하도록 하는 권한 설정
코드 | 절댓값 | 설명 | |
---|---|---|---|
SetUID | s | 4000 | 프로세스 실행 당시 UID로 설정 |
SetGID | s | 2000 | 프로세스 실행 당시 GID로 설정 |
Sticky bit | t | 1000 | 실행 후에도 메모리를 점유하도록 설정 |
1. 2. 파일 시스템의 관리
- OS가 파일을 시스템의 디스크상에서서 구성하는 방식
- HDD나 SSD와 같은 물리적 저장소를 관리
- 컴퓨터에서 자료를 쉽게 접근할 수 있도록 보관하는 체계
1. 2. 1. 리눅스 파일 시스템
ext1
- 리눅스 초기에 사용되던 파일 시스템. 호환성이 없음
- 2GB의 데이터와 파일명을 255자까지 지정 가능
- 파일 접근에 대한 타임 스탬프, inode 수정 불가
ext2
- ext1의 다음 버전으로, 고용량 디스크 사용을 고려하여 설계
- 호환과 업그레이드가 쉽게 설계
ext3
- ext2의 확장판으로, 리눅스의 대표적인 저널링을 지원하는 파일 시스템
- ACL(Access Control List)를 통한 접근 제어 지원
ext4
- ext2 및 ext3와 호환성이 있는 확장 버전
- 파일에 디스크 할당 시 물리적으로 연속적인 블록을 할당
- 64bit 기억 공간 제한을 없엠
- 16TB의 파일 지원
1. 2. 2. 저널링 파일 시스템
- 시스템의 비정상적인 종료 시 저널(로그)을 이용해 빠르고 안정적인 복구 가능
- 데이터를 디스크에 기록하기 전에 로그에 데이터를 남겨, 로그를 사용한 복구 기능 제공
- 저널링 기술이 적용 된 파일 시스템: ext3, ext4, XFS, JFS, ResierFS
XFS
- SGI에서 개발한 고성능 저널링 시스템
- 가장 크기가 큰 파일 생성이 가능
- 64bit 주소 지원 파일 시스템으로, 확장성이 있는 자료구조와 알고리즘 사용
JFS
- IBM사의 독자적인 저널링 파일 시스템
- GPL로 공개하여 현재 리눅스용으로 개발
ReiserFS
- 독일의 한스 라이저가 개발한 파일 시스템
- 리눅스용 저널링 파일시스템 중 가장 안정적이라는 평가
- 모든 파일 객체를 B트리에 저장, 간결하고 색인화된 디렉터리 지원
1. 2. 3. 네트워크 파일 시스템 ★
파일서버(File Server) ★★
- 파일 서버에는 OS에 따라 Windows, UNIX, Linux 파일서버가 존재
- Windows 파일섭는 CIFS를 사용하여 클라이언트에 스토리지를 공유
- 흔히 PC의 윈도우 탐색기의 [속성] -> [공유]로 폴더를 공유하고, 다른 PC에서 네트워크 드라이브 연결로 상대PC의 스토리지를 원격 접속하는 것이 이에 해당
- UNIX나 Linux에서는 CIFS가 아닌 NFS를 사용
- Windows <-> Windwos: 윈도우 공유 기능을 이용하여 CIFS사용
- Linux <-> Linux: 리눅스 NFS-Utils을 이용하여 NFS사용
- Linux <-> Windwos: Samba를 이용하여 SMB/CIFS를 사용
삼바(Samba) ★★★
- Windows OS와 Linux 또는 UNIX 서버에 접속하여 파일이나 프린터를 공유하여 사용할 수 있도록 해 주는 소프트웨어
- SMB/CIFS 네트워킹 프로토콜을 다시 구현한 자유 소프트웨어
SMB(Server Message Block) ★
- Microsoft와 Intel에서 개발한 Windows시스템과 다른 시스템 간 사용되는 파일/프린터 공유 프로토콜
- Windows OS와 Linux, UNIX OS의 자료 및 하드웨어 공유
- TCP/IP기반 하 NetBIOS프로토콜을 상하며 NFS, NIS와 같은 UNIX의 분산 인증 구조와 유사
- 삼바(Samba)파일 시스템을 마운트하여 지정
CIFS(Common Internet File System) ★★
- 네트워크를 위한 SMB를 확장한 파일 시스템. 라우터를 넘어서 연결 가능
- Windows와 UNIX환경을 동시에 지원하는 인터넷의 표준 파일 규약 프로토콜
- 이전의 폐쇄적인 SMB프로토콜과는 달리 여러 UNIX업체가 참여하여 결정된 내용
NFS(Network File System) ★★
- Sun Microsystsems에서 개발한 네트워크 분산 파일 시스템(공유 프로토콜)
- 다른 host에 있는 파일 시스템의 일부를 자신의 디렉터리 인 것처럼 마운트하여 사용
- H/W, OS 또는 네트워크 구조가 달라도 공유 가능
1. 2. 4. 기타 지원 가능한 파일 시스템
FAT
- Windows NT가 지원하는 파일 시스템 중 가장 간단한 시스템
- FAT로 포맷된 디스크는 클러스터 단위로 할당
- 읽기 전용, 숨김, 시스템 및 보관 파일 특성만 지원
- 삼바(Samba) 파일 시스템을 마운트 지정
VFAT(Virtual FAT)
- FAT 파일 시스템의 확장으로 FAT과 호환
- FAT보다 제한이 적음
- 파일 이름은 최대 255자 까지 가능, 공백이나 여러 구두점 포함
FAT32
- Windows 95, 98 및 ME와 같은 버전과 다중 부팅 구성
- 32GB보다 큰 파티션을 만들 수 없고, 파티션에 4GB를 초과하는 파일 저장 불가
NTFS
- Windows에서 사용하는 파일 시스템
- 안정성이 뛰어나고 대용량 파일 저장 가능. FAT32보다 우수
ISO 9600
- CD-ROM의 표준 파일 시스템
1. 2. 5. 디스크 쿼터(Disk Quota) ★
: 파일 시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수(inode)를 제한할 때 사용
#quota ★★
: 현재 사용자 단위 쿼터 정보 출력
#quotaon
: 쿼터 서비스 활성화
#quotaoff
: 쿼터 서비스 비활성화
#quotacheck
: 모든 파일 시스템 점검, 쿼터 설정 및 기록 파일 갱신
#repquota ★★
: 시스템 단위 쿼터 정보를 요약하여 출력
#edquota ★★★
: 펀집기(editor, vi)를 이용하여 사용자나 그룹에 디스크 사용량 할당
#edquota [옵션] [계정명]
[옵션]
-p: 디스크 할당량 설정을 다른 사용자와 동일하게 설정
-u: 사용자 디스크 할당량 설정 *default옵션
-g: 그룹 디스크 할당량 설정
-t: 디스크 할당량 유예기간 설정
edquota -p linux yb # 사용자 linux에게 설정된 쿼터를 사용자 yb에게도 적용 edquota -u yb # 사용자 yb의 쿼터를 설정하며 vi편집기 실행
#setquota ★
: 편집기 기반이 아닌 명령행에서 직접 사용자나 그룹에 디스크 사용량을 할당
#setquota [옵션] [계정명] [block_soft_limit] [block_hard_limit] [inode_soft_limit] [inode_hard_limit] [파티션명]
[옵션]
-u: 사용자 디스크 할당량 설정
-g: 그룹 디스크 할당량 설정
-a: 해당 시스템의 모든 설정
-t: 유예기간 설정
setquota -u yb 20M 30M 0 0 /home #사용자 yb의 용량 제한을 soft 20M, hard 30M로 설정하고 inode에 대한 설정은 하지 않음
cf) 쿼터 설정 과정: quotacheck -> edquoa -> quotaon -> repquota
1. 2. 6. 파일 시스템 관련 명령어 ★
#mount ★
: 특정 장치 또는 파일 시스템을 디렉터리처럼 사용하기 위해 연결
#mount [옵션] [장치 또는 파일시스템] [디렉터리명]
[옵션]
-a: /etc/fstab 파일에 정의된 모든 시스템 마운트
-n: /etc/mtab 파일에 정보를 저장하지 않고 마운트
-f: 실제 시스템 호출은 하징 낳고, 마운트 가능 여부만 테스트
-r: 파일을 읽기 전용으로 마운트
-w: 파일 시스템을 읽기/쓰기 형식으로 마운트 *default
-v: 현재 시스템 마운트 정보 확인
–t [타입]: 마운트할 파일 시스템의 형식 지정
[타입]
vfat: FAT32
ext2/ext3/ext4: Linux 파일 시스템
iso9660: CD-ROM, DVD
smbfs: 삼바(Samba) 파일 시스템
nfs: 네트워크 파일 시스템의 공유된 영역
#umount
: 마운트를 해제하는 명령어
#umount [옵션] [장치 또는 파일시스템] [디렉터리명]
[옵션]
-a: /etc/mtab에 명시된 파일 시스템 마운트 해제
-n: /etc/mtab 파일을 갱신하지 않고 마운트 해제
-t [타입]: 마운트 해제할 파일 시스템의 형식을 지정
#eject
: 이동식 보조기억 장치(CD-ROM, DVD)등과 같은 미디어를 해제하고 장치 제거
#eject [옵션] [장치명]
[옵션]
-r: CD-ROM 장치 제거
-t: 플로피 디스크 장치 제거
#fdisk ★★★
: 파티션 생성, 삭제, 파티션의 타입 결정 등 작업 수행
fdisk [옵션] [장치명(디스크)]
[옵션]
-v: fdisk 버전 정보 확인
-l: 현재 디스크의 파티션 테이블 정보 확인
fdisk [디스크] – [내부 명령어]
m: 사용 가능한 명령어 확인
l: fdisk에 알려진 파티션 유형 확인
n: 새 파티션 추가
d: 파티션 삭제
t: 파티션 타입 변경
p: 현재 설정된 파티션 정보 확인
w: 현재 설정한 파티션 정보 저장 및 종료
q: 설정된 정보 저장하지 않고 종료
#mkfs ★★★
: 파일 시스템 생성. fdisk로 HDD의 파티션을 나눈 후 해당 파티션에 맞는 파일 시스템을 mkfs 혹은 mke2fs로 생성
#mkfs [옵션] [장치명]
[옵션]
-V: 버전 확인
–t [파일시스템]: 생성할 파일 시스템 타입(ext2, ext3, ext4 등) 지정 *미지정시 ext2 default
-v: 작업 상태와 결과 자세히 보기
#mke2fs ★★★
: ext2, ext3, ext4 타입의 리눅스 파일 시스템을 생성
#mke2fs [옵션] [장치명]
cf) 디스크 추가 및 마운트 과정: fdisk -> mkfs -> mkdir -> mount
mkfs.ext4 /dev/sdb1 # /dev/sdb1 파티션을 ext4 파일시스템으로 포맷 mkfs -t ext4 /dev/sdb1 # /dev/sdb1 파티션을 ext4 파일시스템으로 포맷 mke2fs -t ext4 /dev/sdb1 # /dev/sdb1 파티션을 ext4 파일시스템으로 포맷 mke2fs.ext /dev/sdb1 # 이와 같은 사용은 불가능
#fsck / e2fsck
: 파일시스템의 무결성을 점검하고 대화식으로 복구
#fsck [옵션] [장치명] #e2fsck [옵션] [장치명]
#blkid ★
: 블록 장치의 파일 시스템 종류와 함께 파일 시스템의 UUID값 확인
#lsblk ★
: 파일 시스템의 정보를 blkid보다 상세하게 표시. 트리 형식으로 보이는 것이 특징#du ★
: 파일 및 디렉터리 별로 디스크 사용량 확인
#du [옵션] [파일명]
[옵션]
-s: 사용량의 총 합계만 확인. 파일의 전체 크기를 합한 값
-k: 결과 값을 KB단위로 확인 *default
-m: 결과 값을 MB단위로 확인
-h: 결과 값을 용량 단위(KB, MB, GB)로 확인
-a: 디렉터리가 아닌 모든 파일에 대한 정보 확인
-c: 모든 파일의 디스크 사용 정보와 마지막의 총 합계(total) 확인
du -sh /* #/하위의 모든 파일의 총 합계를 용량 단위(KB, MB, GB)로 확인
#df ★★
: 시스템에 마운트 된 HDD의 파티션 단위 사용량 확인
#df [옵션] [파일명]
[옵션]
-h: 용량 단위(KB, MB, GB)로 확인
-T: 파일 시스템 유형을 포함하여 확인
-i: inode 사용량, 공간, 퍼센트 확인
-t [파일 유형] 표시되는 파일 시스템 유형 지정
df -Tht ext2 # ext2 파일시스템 유형의 파티션 사용량을 파일시스템 유형을 포함하여 용량 단위(KB, MG, GB)로 확인
1. 2. 6. /etc/fstab, /etc/mtab, RAID, LVM ★
/etc/fstab ★★
- 파일 시스템 정보와 부팅 시 마운트 포인트가 저장되어 있는 파일
proc | /proc | proc | defaults | 0 | 0 |
---|---|---|---|---|---|
① | ② | ③ | ④ | ⑤ | ⑥ |
① 파일시스템 장치명, 볼륨 라벨, UUID
② 마운트 포인트
③ 파일 시스템 종류
④ 파일 시스템 속성
default: auto / exec/ rw등을 모두 가짐
auto: 부팅 시 자동 마운트
exec: 실행 파일이 실행되는 것을 허용
ro: 읽기 전용
rw: 읽고 쓰기
user: 일반 사용자들의 마운트 권한 부여
usrquota: 사용자의 디스크 쿼터 설정 명시
grpquota: 그룹별 디스크 쿼터 설정 명시
noauto / noexec/ nouser: 비활성화
⑤ 덤프(dump) 명령으로, 백업 시 덤프 레벨을 결정. 즉 백업 사용 주기 결정
0: 덤프 불가
1: 매일 데이터 백업 가능
2: 이틀에 한번 데이터 백업 가능
⑥ 파일 점검 옵션. 부팅 시 파일 시스템을 점검하는 fsck 순서 부여
0: 파일 시스템 미점검
1: 루트 파일 시스템 점검
2: 루트 파일 시스템 이외의 파일 시스템 점검
/etc/mtab ★★
- 현재 마운트 되어 있는 파일 시스템이 기록.
- 내용은 /etc/fstab과 동일하며, 현재 마운트된 파일 시스템의 상태를 읽을 때 사용
RAID(Redundant Array of Independent Disks ★★★
: 여러 개의 디스크를 하나로 묶어서, 하나의 큰 저장 장치처럼 동작하도록 만드는 기술
- RAID 0
- 연속된 데이터를 여러 디스크에 라운드 로빈(Round Robin)방식으로 기록
- 스트라이핑을 통한 성능 향상
- 데이터를 여러 디스크로 분산하여 저장함으로써 빠른 읽기/쓰기 속도 제공
- 단일 디스크의 고장 시 데이터 손실 우려
- RAID 1
- 미러링으로 데이터 복제본을 만들어 저장
- 하나의 디스크가 고장나도 복제된 디스크에서 데이터 복구 가능
- 저장 공간의 활용이 낮음
- RAID 2
- 해밍 코드(Hamming Code)를 사용한 오류 검출과 복구 수행
- 오류 검출과 복구가 가능하지만 복잡하고 비효율적
- RAID 3 & RAID 4
- 데이터를 여러 디스크에 스트라이핑 방식으로 분산 저장 후, 오류 수정을 위한 패리티 정보를 별도의 디스크에 따로 저장
- RAID 3는 데이터를 바이트로 나누어 디스크에 동등하게 분산
- RAID 4는 데이터를 블록 단위로 나누어 디스크에 분산
- RAID 5 & RAID 6
- 분산 패리티 방식. 데이터와 패리티 정보를 포함하여 여러 디스크에 분산하여 저장
- RAID 5는 하나의 디스크가 고장나도 분산 패리티 정보를 활용하여 데이터 복구
- RAID 6는 추가적인 패리티 정보를 사용하여 두개의 디스크 고장에도 복구 가능
LVM(Logical Volume Manage) ★★★
: 논리 볼륨 관리자. 여러 개의 물리적인 하드 디스크를 논리적인 디스크로 관리
- PV(Physical Volume)
- 실제 스토리지 디바이스로, HDD나 SSD와 같은 저장장치를 의미
- LVM으로 사용하기 위해 형식을 변환
- VG(Volume Group)
- 하나 이상의 PV를 묶어서 구성하는 논리적인 그룹
- 여러 스토리지 디바이스를 하나의 논리적 그룹으로 묶어서 관리
- LV(Logical Volume)
- VG내에 생성된 가상 볼륨
- 파일 시스템을 만들어 데이터를 저장할 수 있으며, 실질적인 파티션으로 사용