리눅스 마스터 2급 대비 정리(4) (파일 시스템 관련 명령어 - 권한 및 그룹 설정, 파일 시스템의 관리)
리눅스 마스터 2급 시험 대비를 위해 관련 책을 바탕으로 내용들을 정리하는 포스트입니다. 이번 포스트는 파일 시스템과 관련된 명령어를 이해하는 파트로 권한 및 그룹 설정, 파일 시스템의 관리에 대해 알아보겠습니다.
개요
이번 포스트는 권한 및 그룹 설정, 파일 시스템의 관리에 대해 알아보겠습니다.
참고한 책은 2023 이기적 리눅스 마스터 2급 기본서 - 권소라 저, 영진닷컴입니다. 실습한 리눅스 버전은 CentOS 7이고, ISO 명은 CentOS-7-x86_64-Minimal-2009.iso입니다.
목차
권한 및 그룹 설정
리눅스 시스템의 모든 파일과 디렉터리에는 접근권한과 소유권이 부여됩니다.
위 사진을 참고 자료로 확인해 보겠습니다.
속성 값 | 의미 |
---|---|
drwxr-xr-x | 파일 허가권, 앞의 d는 파일의 유형을 뜻하고, 뒤의 나머지 글자들은 접근 권한을 의미 |
3 | 물리적 파일 연결 개수 |
root | 파일 소유자명 |
root | 파일 소유 그룹명 |
24 | 파일 크기(바이트 단위) |
Aug 14 22:16 | 파일이 마지막으로 변경된 시간 |
home | 파일명 |
- 파일의 허가권이나 소유권을 설정하는 명령어는 chmod, chown, chgrp, umask 등이 있습니다.
소유권(Ownership)과 관련된 명령어
명령어 | 형식 | 설명 |
---|---|---|
chown | chown [옵션] 소유자 [그룹명] 파일명 | 파일과 디렉터리의 사용자 소유권과 그룹 소유권 변경, -R은 하위 디렉터리를 포함해 디렉터리 내부의 모든 파일의 소유권을 변경 |
chgrp | chgrp [옵션] 그룹명 파일명 | change group로 파일이나 디렉터리의 그룹 소유권을 변경, chown과 다르게 그룹 소유권만 변경 가능 -R은 chown과 같은 옵션 |
허가권(permission)과 관련 명령어
파일 유형
기호 | 파일 유형 |
---|---|
- | 일반 파일 |
d | 디렉터리 파일 |
b | 블록 단위로 읽고 쓰는 블록 장치(하드, 플로피, CD/DVD 등 저장 장치) 특수 파일 |
c | 문자 단위로 읽고 쓰는 문자 장치(마우스, 키보드, 프린터의 입출력 장치) 특수 파일 |
l | 기호적 링크로 바로가기 아이콘 역할 수행, 연결되어 있는 파일과 실제 파일은 다른 곳에 존재 |
p | 파이프 |
s | 소켓 |
- 파일 사용자는 파일 소유자, 그룹 소속자, 기타 사용자로 구분하며 각기 기호 모드나 8진수 숫자로 가진 권한이 표시됩니다. 기호 모드의 경우 r(Read), w(write), x(eXecute)로 작성되고, 8진수의 경우 4, 2, 1로 작성할 수 있습니다.
파일 권한
파일 권한 | 일반 파일 | 디렉터리 파일 | 특수 파일 |
---|---|---|---|
읽기(r) | 파일 내용 읽기 | 디렉터리 내 파일 목록 읽기 | read()로 파일 읽기 |
쓰기(w) | 파일 수정/삭제 | 디렉터리 내 파일 생성/삭제 가능 | write()로 파일 내용 변경 |
실행(x) | 파일 실행 | cd 명령을 이용해 디렉터리로 이동 가능 | 권한 의미 없음 |
허가권과 관련된 명령어
명령어 | 형식 | 설명 |
---|---|---|
chmod | chmod [옵션] 파일명 | 파일이나 디렉터리의 접근 허가권을 변경하는 명령어, -R의 경우 chown의 옵션과 동일 |
umask | umask [옵션] [값] | 새로 생성되는 파일이나 디렉터리의 기본 허가권 값을 지정, 파일의 기본 권한은 666, 디렉터리의 기본 권한은 777, -S는 umask 값을 문자로 표기 |
- umask의 경우 디폴트 권한 값에서 설정한 umask 값을 뺀 값을 기본 허가권으로 설정합니다. 예를 들어, umask가 022인 경우 디폴트 파일 권한은 644, 디렉터리 권한은 755로 변경됩니다. 아래 사진은 그 예시입니다.
chmod 사용시 기호 모드 설명
기호 모드 | 의미 |
---|---|
u | 소유자 |
g | 그룹 |
o | 기타 사용자 |
a | 모든 사용자 |
+ | 허가권 부여 |
- | 허가권 제거 |
= | 특정 사용자에게 허가권 지정 |
r | 읽기 |
w | 쓰기 |
x | 실행 |
특수 권한
- SetUID와 SetGID
- 프로세스가 실행되는 동안 해당 프로세스의 root 권한을 임시로 가져오는 기능입니다.
- SetUID의 경우 사용자가 사용할 때만 파일의 소유자와 같은 권한으로 파일을 실행시키고, SetGID의 경우 사용자가 사용할 때만 소유 그룹과 같은 권한으로 파일을 실행시킵니다.
- SetGID 권한이 명시된 디렉터리에 생성되는 모든 하위 디렉터리나 파일도 SetGID 권한을 가집니다.
- 특수 권한의 절대적인 표기 방법은 4자리로 나타냅니다.
- SetUID는 코드는 s고 절대값은 4000입니다.
- SetGID의 코드는 s고 절대값은 2000입니다.
- Sticky bit의 경우 코드는 t고 절대값은 1000입니다. 이는 실행 후에도 메모리를 점유하도록 설정하는 것입니다.
- 아래는 SetUID와 SetGID의 사용 예시입니다.
- Sticky bit는 일반적으로 공용 디렉터리를 사용할 때 해당 내용을 설정해 사용합니다.
- 안의 내용은 해당 파일의 소유자나 root만이 변경 가능하게 하여 공용 디렉터리라도 권한에 제약을 두어 다른 사용자들의 파일을 보호하기 위한 목적으로 만들어졌습니다.
- 설정된 디렉터리에는 누구든 접근 가능하고 파일을 생성할 수 있습니다.
- 일반적으로 sticky bit로 설정되는 디렉터리는 /tmp 안에 생성됩니다.
testt를 SetUID로 설정했지만 실행 권한이 없어 S로 실행할 수 없다고 작성되어 있고, 권한을 바꿨더니 s로 실행할 수 있다고 나오는 것을 확인
chmod 2644 test로 권한을 설정했지만 실행 권한이 없어 S로 되있고, 권한을 바꾼뒤 s로 바뀐 것을 확인
파일을 만들고, sbTest를 Sticky bit로 설정
디스크 쿼터
- 파일 시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한하는 것입니다. 보통 블록 단위의 용량 제한과 inode의 개수를 제한합니다.
- 쿼터는 사용자별, 파일 시스템별로 동작합니다.
- 그룹 단위로도 용량을 제한할 수 있으며 웹호스팅 서비스를 하는 경우 유용합니다.
쿼터 관련 명령어
명령어 | 형식 | 설명 | |
---|---|---|---|
quoraoff | 쿼터 서비스를 비활성화 | ||
quotacheck | 파일 시스템의 디스크 사용 상태를 검색, quota 기록 파일인 quota.user, quota.group 또는 aquota.user, aquota.group 파일들을 최근 상태로 갱신하기 위해 사용 | ||
edquota | edquota [옵션] [계정명 | 그룹명] | 편집기를 이용하여 사용자나 그룹에 디스크 사용량을 할당하는 명령어 |
setquota | setquota [옵션] [계정명 | 그룹명] [Block soft limit] [Block hard limit] [inode soft limit] [inode hard limit] [파티션명] | 편집기 기반이 아닌 명령행에서 직접 사용자나 그룹에 디스크 사용량을 할당하는 명령어 |
quoraoff 명령의 옵션
옵션 | 설명 |
---|---|
-a | 파티션 정보 출력 |
-u | 사용자 쿼터 비활성화 |
-g | 그룹 쿼터 비활성화 |
-v | 메시지 출력 |
quotacheck 명령의 옵션
옵션 | 설명 |
---|---|
-a | 모든 파일 시스템을 체크(all) |
-u | 사용자 쿼터 관련 체크(user) |
-g | 그룹 쿼터 관련 체크(group) |
-m | 재마운트를 생략(no-remount) |
-n | 첫 번째 검색된 것을 사용(use-first) |
-p | 처리 결과를 출력(print-state) |
-v | 파일 시스템의 상태를 보여줌(verse) |
edquota 명령의 옵션
옵션 | 설명 |
---|---|
-u | 사용자 디스크 할당량 설정 |
-g | 그룹 디스크 할당량 설정 |
-t | 디스크 할당량 유예기간 설정 |
-p | 디스크 할당량 설정을 다른 사용자와 동일하게 설정 |
setquota 명령의 옵션
옵션 | 설명 |
---|---|
-u | 사용자 디스크 할당량 설정 |
-g | 그룹 디스크 할당량 설정 |
-a | 해당 시스템의 모든 설정 |
-t | 유예기간을 초단위로 설정 |
파일 시스템의 관리
파일 시스템의 개요와 종류
- 개요
- 운영체제가 파일 시스템의 디스크상에 구성하는 방식이며 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제입니다.
- 물리 저장소를 관리합니다.
- 파일 시스템 구조는 Boot Block과 n개의 Block group으로 나타낼 수 있는데 이 그룹은 Suber Block ~ Data Blocks로 나뉩니다.
- Super Block(1 block): 해당 파일 시스템 관련 정보 저장(블록의 크기, 총 블록의 개수와 블록 그룹의 개수, inode의 개수)
- Group Descriptor Table(n blocks): 각 Block Group을 관리하는 정보 저장(Block Bitmap과 inode Bitmap의 블록 번호, 첫 번째 inode Table Block의 블록 번호, 그룹 안에 있는 빈 블록 수, 그룹 안에 있는 inode 수, 그룹 안에 있느 빈 디렉터리 수)
- Block bitmap(1 block): 그룹 내에 있는 각 블록의 사용 상태를 나타냄
- inode: 파일에 대한 제어 정보 및 데이터 블록 포인터 저장, 파일 이름을 제외한 해당 파일의 모든 정보 저장, 파일 이름에 부여되는 고유번호, 파일 형태, 크기, 위치, 파일의 소유자 등, 모든 파일들과 디렉터리들은 각각 1개의 inode를 할당
- inode bitmap: 이 블록에 속한 각 비트는 그룹 내에 있는 각 inode의 사용 상태를 나타냄
- inode table: 각각의 inode에 대한 정보를 나타내는 inode descriptor로 구성
리눅스 전용 디스크 기반 파일 시스템
파일 시스템 | 설명 |
---|---|
ext | 리눅스 초기 파일 스셑ㅁ, 2GByte의 데이터와 파일명을 255자까지 지정 가능, 파일 접근에 대한 time stamp, inode 수정 지원 불가 |
ext2 | 고용량 디스크 사용을 염두에 두고 설계된 파일 시스템, 쉽게 호환되어 업그레이드도 쉽게 설계되어 있음 |
ext3 | 리눅스의 대표적 저널링을 지원하도록 확장된 파일 시스템, ACL(Access Control List)를 통한 접근 제어 지원 |
ext4 | 파일에 디스크 할당 시 물리적으로 연속적인 블록 할당, 64비트 기억 공간 제한 없앰, 16 TByte의 파일 지원 |
리눅스 전용 디스크 기반 파일 시스템 비교
비교 | ext2 | ext3 | ext4 |
---|---|---|---|
개발년도/커널버전 | 1993년 | 2001년 커널 2.4.15 | 2006년 커널 2.6.19, 2008년 커널 2.6.28 |
최대 파일 크기 | 16GB ~ 2TB | 16GB ~ 2TB | 16GB ~ 2TB |
최대 파일 시스템 크기 | 2TB ~ 32TB | 2TB ~ 32TB | 1EB |
특징 | 저널링 기능 없음 | 저널링 기능 포함 | 확장 멀티블록 할당 |
저널링 파일 시스템
- 시스템의 비정상적인 종료 시 로그(저널)를 이용해 빠르면서도 안정적인 복구가 가능합니다.
- 데이터를 디스크에 쓰기 전 로그에 데이터를 남겨 시스템의 비정상적인 셧다운에도 로그를 사용해 빠르고 안정적인 복구 기능을 제공하는 기술입니다.
- 기존 ext2의 경우 시스템이 동작을 멈추기 직전에 파일 슷템에 수정을 가하고 있었는지 전혀 알 수 없습니다.
- 저널 기능이 없는 경우 시스템을 복구하기 위해 fsck에 의해 관리되는 슈퍼블록, 비트맵, 아이노드 등을 모두 검사해야 하기 때문에 시간이 너무 오래 걸립니다.
- 운영 형태는 다음과 같습니다.
- 저널이라는 로그에 시스템 전 상태를 저장합니다.
- 이후 시스템의 비정상적인 종료 시 저널(로그)을 검사합니다.
- 저널(로그) 정보를 바탕으로 파일 시스템에 수정 내용을 적용합니다.
- 저널링 기술이 적용된 파일 시스템은 ext3, ext4, XFS, JFS, ResierFS 등입니다.
파일 시스템 | 설명 |
---|---|
JFS | Journaling File System의 약자로 GPL로 공개하여 현재 리눅스용으로 개발 |
XFS | eXetended File System, 고성능 저널링 시스템, 64비트 주소를 지원해 확장성 있는 자료 구조와 알고리즘 사용, 파일 수에 관계없이 예상치 못한 상황으로부터 신속한 복구와 재시작 가능, 데이터 읽기/쓰기 트랜잭션으로 성능 저하를 최소화, 64비트 파일 시스템으로 큰 용량의 파일도 다룰 수 있음, 높은 확장성과 처리량을 가짐 |
ReiserFS | 리눅스용 저널링 파일 시스템 중에서 가장 안정적이라는 평가를 받음, 모든 파일 객체들을 B트리에 저장, 간결하고 색인화된 디렉터리 지원 |
리눅스 전용 디스크 기반 파일 시스템
파일 시스템 | 설명 |
---|---|
SMB | 삼바 파일 시스템을 마운트 지정, Server Message Block, 윈도우 표준 클라이언트 환경으로 처음부터 구성되었고, NFS, 유닉스 표준 응용부터 운용상 쉽다는 장점이 있음 |
CIFS | Common Internet File System, SMB를 기초로 응용해 라우터를 뛰어넘어 연결할 수 있는 프로토콜 |
NFS | Network File System, 파일 공유 및 파일 서버로 활용, NFS 서버의 특정 디렉터리를 마운트해 사용 가능, 하드웨어, 운영체제 또는 네트워크 구조가 달라도 공유 가능 |
리눅스 전용 디스크 기반 파일 시스템
파일 시스템 | 설명 |
---|---|
FAT | 디스크는 클러스터 단위로 할당되고 크기는 볼륨 크기에 따라 결정, 일기 전용, 숨김, 시스템 및 보관 파일 특성만 지원 |
VFAT(Virtual FAT) | FAT의 확장으로 FAT와 호환, 파일 이름을 최고 255자까지 가능, 대소문자는 지정한 대로 보존되기는 하나 구별하지 않음 |
FAT32 | 32GB보다 큰 파티션을 만들 수 없고 파티션에 4GB를 초과하는 파일을 저장할 수 없음 |
NTFS | 윈도우에서 사용하는 파일 시스템, 안정성이 뛰어나고 대용량 파일도 저장, 파일 크기 및 볼륨은 이론상 16EB, 실질적으로는 2TB로 한계가 있음 |
ISO 9660 | CD-ROM의 표준 파일 시스템 |
UDF | Universal Disk Format의 약자로 최신 파일 시스템 형식, 광학 매체용 파일 시스템 표준, ISO 9960 파일 시스템 대체를 위한 것으로 대부분 DVD에서 쓰임, DVD 멀티미디어 디스크들은 MPEG 오디오 및 비디오 스트림을 담기 위해 사용 |
HPFS | OS/2 운영체제를 위해 만들어진 파일 시스템 |
관련 명령어
명령어 | 형식 | 설명 | |
---|---|---|---|
mount | mount [옵션] [디바이스명] [디렉터리명] | 마운트는 특정 디바이스를 특정 디렉터리처럼 사용하기 위해 장치와 디렉터리를 연결하는 것 | |
unmount | unmount [옵션] [디바이스명] [디렉터리명] | 리눅스는 PnP(Plug and Play) 기능을 지원하지만 지원하는 하드웨어가 많지 않으므로 시스템 부팅 후 수동으로 마운트해 사용하고 사용이 끝난 후 언마운트 시킴 | |
eject | eject [옵션] [디바이스명] | 이동식 보조기억장치 등과 같은 미디어를 해제하고 장치를 제거하는 명령어 | |
fdisk | fdisk [옵션] [장치명] | 새로운 파티션의 생성, 기존 파티션 삭제, 파티션의 타입 결정 등의 작업 수행 | |
mkfs | mkfs [옵션] 장치이름 | 리눅스 파일 시스템을 생성, fdisk로 하드디스크의 파티션을 나눈 후 해당 파티션에 맞는 파일 시스템을 생성 | |
mke2fs | mke2fs [옵션] 장치명 | 리눅스 파일 시스템을 생성(포맷)하는 명령어 | |
fsck | fsck [옵션] 장치명 | 파일 시스템의 무결성을 점검하고 대화식으로 복구하는 명령어, /lost+found 디렉터리를 사용 | |
e2fsck | e2fack [옵션] [디바이스명] | ext2, ext3, ext4 타입의 리눅스 파일 시스템을 점검 및 복구하는 명령어 | |
du | du [옵션] [파일 | 디렉터리명] | Disk Usage의 약자, 디렉터리별로 디스크 사용량 확인 |
df | df [옵션] [파일명] | 시스템에 마운트된 하드 디스크의 용량을, 파티션 단위로 사용량을 확인하는 명령어, 기본적으론 1,024Byte 블록 단위로 출력 |
mount 명령의 옵션
옵션 | 설명 |
---|---|
-a | /etc/fstab 파일에 정의된 모든 시스템 마운트 |
-n | /etc/mtab 파일에 정보를 저장하지 않고 마운트 |
-t | 실제 마운트하는 것이 아니라 마운트가 가능한지 테스트 |
-t 파일 시스템 | |
-o 추가 설정 |
unmount 명령의 옵션
옵션 | 설명 |
---|---|
-a | 파일 /etc/mtab에 명시된 파일 시스템을 마운트 해제 |
-n | 파일 /etc/mtab 파일을 갱신하지 않고 마운트 해제 |
-t | 언마운트할 파일 시스템 지정 |
eject 명령의 옵션
옵션 | 설명 |
---|---|
-r | 시디롬을 마운트 해제 |
-t | 플로피를 마운트 해제 |
fdisk 명령의 옵션
옵션 | 설명 |
---|---|
-v | fdisk 버전 정보 표시 |
-l | 현재 디스크의 파티션 테이블 정보 표시 |
-s | 지정된 파티션의 크기를 블록 단위로 표시 |
fdisk 실행 과정에서 사용되는 주요 명령어
명령어 | 설명 |
---|---|
p | 디스크 정보 표시 |
n | 파티션 생성 |
t | 파티션 속성 지정 |
d | 파티션 삭제 |
w | 변경된 파티션 정보 저장 |
q | 파티션 설정 작업 종료 |
mkfs 명령의 옵션
옵션 | 설명 |
---|---|
-V | 자세한 정보 보기 |
-t 파일 시스템 | 생성할 파일 시스템 타입을 지정 |
-c | 파일 시스템을 생성하기 전에 배드 블록 검사 |
-l 파일명 | 지정된 파일명으로부터 배드블록 목록 읽기 |
-v | 작업 상태와 결과를 자세히 보기 |
mke2fs 명령의 옵션
옵션 | 설명 |
---|---|
-t | 파일 시스템 타입 지정 |
-b | 블록 크기를 바이트 수로 지정 |
-f | 프래그먼트 크기 지정 |
-i | inode당 바이트 수를 지정 |
-j | 파티션을 저널링 파일 시스템 ext3으로 생성 |
-R | RAID4 장치를 포맷할 때 사용하는 특수 옵션, -R stripe는 RAID 장치에 적합한 데이터 구조 저장 |
fsck 명령의 옵션
옵션 | 설명 |
---|---|
-A | /etc/fstab에 표시된 모든 파일 시스템 점검 |
-a | 질의 없이 자동 복구 |
-r | 질의 후 복구 |
-s | fsck 동작을 시리얼화, 대화형 모드에서 여러 파일 시스템 점검 시 유용 |
-t 파일 시스템 | 점검할 파일 시스템 유형 지정 |
e2fsck 명령의 옵션
옵션 | 설명 |
---|---|
-p | 파일 시스템을 검사하면서 자동으로 복구(preen) |
-n | 모든 질문에 대한 응답을 no로 취급(onlty check) |
-y | 모든 질문에 대한 응답을 yes로 취급 |
-c | BAD BLOCK을 CHECK |
-f | 깨끗한 파일 시스템까지 강제적으로 check(force) |
du 명령의 옵션
옵션 | 설명 |
---|---|
-h | 용량 단위(KB, MB, GB)로 표시 |
-a | 디렉터리가 아닌 모든 파일에 대한 정보 표시 |
-m | 결과 값을 MB 단위로 표시 |
-k | 결과 값을 KB 단위로 표시(기본값) |
-s | 사용량의 총 합계만 표시, 파일의 전체 크기를 합한 값으로 표시 |
-c | 모든 파일의 디스크 사용 정보를 보여주고 나서 합계를 표시 |
df 명령의 옵션
옵션 | 설명 |
---|---|
-h | 용량 단위(KB, MB, GB)로 표시 |
-T | 파일 시스템 유형과 파티션 정보 출력 |
-t | 표시되는 파일 시스템 유형을 지정 |
-a | Q 블록의 파일 시스템을 포함해 모든 파일 시스템을 출력 |
-k | –block-size=1K와 같은 의미 |
-l | inode 사용률 확인, 사용 공간, 사용 퍼센트 출력 |
파일 /etc/fstab
- 리눅스에서 사용하는 파일 시스템 정보를 정적으로 저장하고 있는 파일입니다.
- 리눅스 파일 시스템 정보와 부팅 시 마운트 정보를 가지고 있습니다.