제목

리눅스 마스터 2급 대비 정리(4) (파일 시스템 관련 명령어 - 권한 및 그룹 설정, 파일 시스템의 관리)

   2023년08월16일     25분읽었습니다.

리눅스 마스터 2급 시험 대비를 위해 관련 책을 바탕으로 내용들을 정리하는 포스트입니다. 이번 포스트는 파일 시스템과 관련된 명령어를 이해하는 파트로 권한 및 그룹 설정, 파일 시스템의 관리에 대해 알아보겠습니다.


개요

이번 포스트는 권한 및 그룹 설정, 파일 시스템의 관리에 대해 알아보겠습니다.
참고한 책은 2023 이기적 리눅스 마스터 2급 기본서 - 권소라 저, 영진닷컴입니다. 실습한 리눅스 버전은 CentOS 7이고, ISO 명은 CentOS-7-x86_64-Minimal-2009.iso입니다.

목차

  1. 권한 및 그룹 설정
  2. 파일 시스템의 관리

권한 및 그룹 설정

리눅스 시스템의 모든 파일과 디렉터리에는 접근권한과 소유권이 부여됩니다.

ls -l 명령어로 권한 확인

위 사진을 참고 자료로 확인해 보겠습니다.

속성 값의미
drwxr-xr-x파일 허가권, 앞의 d는 파일의 유형을 뜻하고, 뒤의 나머지 글자들은 접근 권한을 의미
3물리적 파일 연결 개수
root파일 소유자명
root파일 소유 그룹명
24파일 크기(바이트 단위)
Aug 14 22:16파일이 마지막으로 변경된 시간
home파일명
  • 파일의 허가권이나 소유권을 설정하는 명령어는 chmod, chown, chgrp, umask 등이 있습니다.

소유권(Ownership)과 관련된 명령어

명령어형식설명
chownchown [옵션] 소유자 [그룹명] 파일명파일과 디렉터리의 사용자 소유권과 그룹 소유권 변경, -R은 하위 디렉터리를 포함해 디렉터리 내부의 모든 파일의 소유권을 변경
chgrpchgrp [옵션] 그룹명 파일명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 명령을 이용해 디렉터리로 이동 가능권한 의미 없음

허가권과 관련된 명령어

명령어형식설명
chmodchmod [옵션] 파일명파일이나 디렉터리의 접근 허가권을 변경하는 명령어, -R의 경우 chown의 옵션과 동일
umaskumask [옵션] [값]새로 생성되는 파일이나 디렉터리의 기본 허가권 값을 지정, 파일의 기본 권한은 666, 디렉터리의 기본 권한은 777, -S는 umask 값을 문자로 표기
  • umask의 경우 디폴트 권한 값에서 설정한 umask 값을 뺀 값을 기본 허가권으로 설정합니다. 예를 들어, umask가 022인 경우 디폴트 파일 권한은 644, 디렉터리 권한은 755로 변경됩니다. 아래 사진은 그 예시입니다.

umask의 작동 방식

chmod 사용시 기호 모드 설명

기호 모드의미
u소유자
g그룹
o기타 사용자
a모든 사용자
+허가권 부여
-허가권 제거
=특정 사용자에게 허가권 지정
r읽기
w쓰기
x실행

특수 권한

  1. SetUID와 SetGID
    • 프로세스가 실행되는 동안 해당 프로세스의 root 권한을 임시로 가져오는 기능입니다.
    • SetUID의 경우 사용자가 사용할 때만 파일의 소유자와 같은 권한으로 파일을 실행시키고, SetGID의 경우 사용자가 사용할 때만 소유 그룹과 같은 권한으로 파일을 실행시킵니다.
    • SetGID 권한이 명시된 디렉터리에 생성되는 모든 하위 디렉터리나 파일도 SetGID 권한을 가집니다.
    • 특수 권한의 절대적인 표기 방법은 4자리로 나타냅니다.
      • SetUID는 코드는 s고 절대값은 4000입니다.
      • SetGID의 코드는 s고 절대값은 2000입니다.
      • Sticky bit의 경우 코드는 t고 절대값은 1000입니다. 이는 실행 후에도 메모리를 점유하도록 설정하는 것입니다.
    • 아래는 SetUID와 SetGID의 사용 예시입니다.
  2. Sticky bit는 일반적으로 공용 디렉터리를 사용할 때 해당 내용을 설정해 사용합니다.
    • 안의 내용은 해당 파일의 소유자나 root만이 변경 가능하게 하여 공용 디렉터리라도 권한에 제약을 두어 다른 사용자들의 파일을 보호하기 위한 목적으로 만들어졌습니다.
    • 설정된 디렉터리에는 누구든 접근 가능하고 파일을 생성할 수 있습니다.
    • 일반적으로 sticky bit로 설정되는 디렉터리는 /tmp 안에 생성됩니다.

testt를 SetUID로 설정했지만 실행 권한이 없어 S로 실행할 수 없다고 작성되어 있고, 권한을 바꿨더니 s로 실행할 수 있다고 나오는 것을 확인 uid 작동 방법

chmod 2644 test로 권한을 설정했지만 실행 권한이 없어 S로 되있고, 권한을 바꾼뒤 s로 바뀐 것을 확인 gid 작동 방법

파일을 만들고, sbTest를 Sticky bit로 설정 gid 작동 방법

디스크 쿼터

  • 파일 시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한하는 것입니다. 보통 블록 단위의 용량 제한과 inode의 개수를 제한합니다.
  • 쿼터는 사용자별, 파일 시스템별로 동작합니다.
  • 그룹 단위로도 용량을 제한할 수 있으며 웹호스팅 서비스를 하는 경우 유용합니다.

쿼터 관련 명령어

명령어형식설명 
quoraoff 쿼터 서비스를 비활성화 
quotacheck 파일 시스템의 디스크 사용 상태를 검색, quota 기록 파일인 quota.user, quota.group 또는 aquota.user, aquota.group 파일들을 최근 상태로 갱신하기 위해 사용 
edquotaedquota [옵션] [계정명그룹명]편집기를 이용하여 사용자나 그룹에 디스크 사용량을 할당하는 명령어
setquotasetquota [옵션] [계정명그룹명] [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유예기간을 초단위로 설정

파일 시스템의 관리

파일 시스템의 개요와 종류

  1. 개요
    • 운영체제가 파일 시스템의 디스크상에 구성하는 방식이며 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제입니다.
    • 물리 저장소를 관리합니다.
    • 파일 시스템 구조는 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의 파일 지원

리눅스 전용 디스크 기반 파일 시스템 비교

비교ext2ext3ext4
개발년도/커널버전1993년2001년 커널 2.4.152006년 커널 2.6.19, 2008년 커널 2.6.28
최대 파일 크기16GB ~ 2TB16GB ~ 2TB16GB ~ 2TB
최대 파일 시스템 크기2TB ~ 32TB2TB ~ 32TB1EB
특징저널링 기능 없음저널링 기능 포함확장 멀티블록 할당

저널링 파일 시스템

  • 시스템의 비정상적인 종료 시 로그(저널)를 이용해 빠르면서도 안정적인 복구가 가능합니다.
  • 데이터를 디스크에 쓰기 전 로그에 데이터를 남겨 시스템의 비정상적인 셧다운에도 로그를 사용해 빠르고 안정적인 복구 기능을 제공하는 기술입니다.
    • 기존 ext2의 경우 시스템이 동작을 멈추기 직전에 파일 슷템에 수정을 가하고 있었는지 전혀 알 수 없습니다.
    • 저널 기능이 없는 경우 시스템을 복구하기 위해 fsck에 의해 관리되는 슈퍼블록, 비트맵, 아이노드 등을 모두 검사해야 하기 때문에 시간이 너무 오래 걸립니다.
  • 운영 형태는 다음과 같습니다.
    • 저널이라는 로그에 시스템 전 상태를 저장합니다.
    • 이후 시스템의 비정상적인 종료 시 저널(로그)을 검사합니다.
    • 저널(로그) 정보를 바탕으로 파일 시스템에 수정 내용을 적용합니다.
  • 저널링 기술이 적용된 파일 시스템은 ext3, ext4, XFS, JFS, ResierFS 등입니다.
파일 시스템설명
JFSJournaling File System의 약자로 GPL로 공개하여 현재 리눅스용으로 개발
XFSeXetended File System, 고성능 저널링 시스템, 64비트 주소를 지원해 확장성 있는 자료 구조와 알고리즘 사용, 파일 수에 관계없이 예상치 못한 상황으로부터 신속한 복구와 재시작 가능, 데이터 읽기/쓰기 트랜잭션으로 성능 저하를 최소화, 64비트 파일 시스템으로 큰 용량의 파일도 다룰 수 있음, 높은 확장성과 처리량을 가짐
ReiserFS리눅스용 저널링 파일 시스템 중에서 가장 안정적이라는 평가를 받음, 모든 파일 객체들을 B트리에 저장, 간결하고 색인화된 디렉터리 지원

리눅스 전용 디스크 기반 파일 시스템

파일 시스템설명
SMB삼바 파일 시스템을 마운트 지정, Server Message Block, 윈도우 표준 클라이언트 환경으로 처음부터 구성되었고, NFS, 유닉스 표준 응용부터 운용상 쉽다는 장점이 있음
CIFSCommon Internet File System, SMB를 기초로 응용해 라우터를 뛰어넘어 연결할 수 있는 프로토콜
NFSNetwork File System, 파일 공유 및 파일 서버로 활용, NFS 서버의 특정 디렉터리를 마운트해 사용 가능, 하드웨어, 운영체제 또는 네트워크 구조가 달라도 공유 가능

리눅스 전용 디스크 기반 파일 시스템

파일 시스템설명
FAT디스크는 클러스터 단위로 할당되고 크기는 볼륨 크기에 따라 결정, 일기 전용, 숨김, 시스템 및 보관 파일 특성만 지원
VFAT(Virtual FAT)FAT의 확장으로 FAT와 호환, 파일 이름을 최고 255자까지 가능, 대소문자는 지정한 대로 보존되기는 하나 구별하지 않음
FAT3232GB보다 큰 파티션을 만들 수 없고 파티션에 4GB를 초과하는 파일을 저장할 수 없음
NTFS윈도우에서 사용하는 파일 시스템, 안정성이 뛰어나고 대용량 파일도 저장, 파일 크기 및 볼륨은 이론상 16EB, 실질적으로는 2TB로 한계가 있음
ISO 9660CD-ROM의 표준 파일 시스템
UDFUniversal Disk Format의 약자로 최신 파일 시스템 형식, 광학 매체용 파일 시스템 표준, ISO 9960 파일 시스템 대체를 위한 것으로 대부분 DVD에서 쓰임, DVD 멀티미디어 디스크들은 MPEG 오디오 및 비디오 스트림을 담기 위해 사용
HPFSOS/2 운영체제를 위해 만들어진 파일 시스템

관련 명령어

명령어형식설명 
mountmount [옵션] [디바이스명] [디렉터리명]마운트는 특정 디바이스를 특정 디렉터리처럼 사용하기 위해 장치와 디렉터리를 연결하는 것 
unmountunmount [옵션] [디바이스명] [디렉터리명]리눅스는 PnP(Plug and Play) 기능을 지원하지만 지원하는 하드웨어가 많지 않으므로 시스템 부팅 후 수동으로 마운트해 사용하고 사용이 끝난 후 언마운트 시킴 
ejecteject [옵션] [디바이스명]이동식 보조기억장치 등과 같은 미디어를 해제하고 장치를 제거하는 명령어 
fdiskfdisk [옵션] [장치명]새로운 파티션의 생성, 기존 파티션 삭제, 파티션의 타입 결정 등의 작업 수행 
mkfsmkfs [옵션] 장치이름리눅스 파일 시스템을 생성, fdisk로 하드디스크의 파티션을 나눈 후 해당 파티션에 맞는 파일 시스템을 생성 
mke2fsmke2fs [옵션] 장치명리눅스 파일 시스템을 생성(포맷)하는 명령어 
fsckfsck [옵션] 장치명파일 시스템의 무결성을 점검하고 대화식으로 복구하는 명령어, /lost+found 디렉터리를 사용 
e2fscke2fack [옵션] [디바이스명]ext2, ext3, ext4 타입의 리눅스 파일 시스템을 점검 및 복구하는 명령어 
dudu [옵션] [파일디렉터리명]Disk Usage의 약자, 디렉터리별로 디스크 사용량 확인
dfdf [옵션] [파일명]시스템에 마운트된 하드 디스크의 용량을, 파티션 단위로 사용량을 확인하는 명령어, 기본적으론 1,024Byte 블록 단위로 출력 

mount 명령의 옵션

옵션설명
-a/etc/fstab 파일에 정의된 모든 시스템 마운트
-n/etc/mtab 파일에 정보를 저장하지 않고 마운트
-t실제 마운트하는 것이 아니라 마운트가 가능한지 테스트
-t 파일 시스템 
-o 추가 설정 

unmount 명령의 옵션

옵션설명
-a파일 /etc/mtab에 명시된 파일 시스템을 마운트 해제
-n파일 /etc/mtab 파일을 갱신하지 않고 마운트 해제
-t언마운트할 파일 시스템 지정

eject 명령의 옵션

옵션설명
-r시디롬을 마운트 해제
-t플로피를 마운트 해제

fdisk 명령의 옵션

옵션설명
-vfdisk 버전 정보 표시
-l현재 디스크의 파티션 테이블 정보 표시
-s지정된 파티션의 크기를 블록 단위로 표시

fdisk 실행 과정에서 사용되는 주요 명령어

명령어설명
p디스크 정보 표시
n파티션 생성
t파티션 속성 지정
d파티션 삭제
w변경된 파티션 정보 저장
q파티션 설정 작업 종료

mkfs 명령의 옵션

옵션설명
-V자세한 정보 보기
-t 파일 시스템생성할 파일 시스템 타입을 지정
-c파일 시스템을 생성하기 전에 배드 블록 검사
-l 파일명지정된 파일명으로부터 배드블록 목록 읽기
-v작업 상태와 결과를 자세히 보기

mke2fs 명령의 옵션

옵션설명
-t파일 시스템 타입 지정
-b블록 크기를 바이트 수로 지정
-f프래그먼트 크기 지정
-iinode당 바이트 수를 지정
-j파티션을 저널링 파일 시스템 ext3으로 생성
-RRAID4 장치를 포맷할 때 사용하는 특수 옵션, -R stripe는 RAID 장치에 적합한 데이터 구조 저장

fsck 명령의 옵션

옵션설명
-A/etc/fstab에 표시된 모든 파일 시스템 점검
-a질의 없이 자동 복구
-r질의 후 복구
-sfsck 동작을 시리얼화, 대화형 모드에서 여러 파일 시스템 점검 시 유용
-t 파일 시스템점검할 파일 시스템 유형 지정

e2fsck 명령의 옵션

옵션설명
-p파일 시스템을 검사하면서 자동으로 복구(preen)
-n모든 질문에 대한 응답을 no로 취급(onlty check)
-y모든 질문에 대한 응답을 yes로 취급
-cBAD BLOCK을 CHECK
-f깨끗한 파일 시스템까지 강제적으로 check(force)

du 명령의 옵션

옵션설명
-h용량 단위(KB, MB, GB)로 표시
-a디렉터리가 아닌 모든 파일에 대한 정보 표시
-m결과 값을 MB 단위로 표시
-k결과 값을 KB 단위로 표시(기본값)
-s사용량의 총 합계만 표시, 파일의 전체 크기를 합한 값으로 표시
-c모든 파일의 디스크 사용 정보를 보여주고 나서 합계를 표시

df 명령의 옵션

옵션설명
-h용량 단위(KB, MB, GB)로 표시
-T파일 시스템 유형과 파티션 정보 출력
-t표시되는 파일 시스템 유형을 지정
-aQ 블록의 파일 시스템을 포함해 모든 파일 시스템을 출력
-k–block-size=1K와 같은 의미
-linode 사용률 확인, 사용 공간, 사용 퍼센트 출력

파일 /etc/fstab

  1. 리눅스에서 사용하는 파일 시스템 정보를 정적으로 저장하고 있는 파일입니다.
  2. 리눅스 파일 시스템 정보와 부팅 시 마운트 정보를 가지고 있습니다.

참고 자료

  1. 2023 이기적 리눅스 마스터 2급 기본서 - 권소라 저, 영진닷컴