LINUX, 사용자 사용량 관리하기

2020. 9. 3. 17:20BACKEND/Linux

안녕하세요 〰️ 오늘은 리눅스의 권한 관리하는 법 3부입니다.

원래 특수권한과 같이 발행하려고 했는데, 포스팅의 길이가 너무 길어져서 따로 분리했습니다 🤣

 

*****************  INDEX  *****************

 

[1부]

🚀 권한 관리❓ 

💼 소유권(Ownership)

🔑 허가권(Permission)

 

[2부]

👾 특수 권한

 

[3부]

📀 디스크 쿼터

💼 디스크 쿼터 설정하기

⚡️ 디스크 쿼터 명령어

 

******************************************** 


📀 디스크 쿼터

파일 시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한하는 것입니다.

사용자나 그룹이 가질 수 있는 inode의 수 할당된 디스크 블록 수를 제한합니다.

보통 블록 단위의 용량 제한과 inode의 개수를 제한합니다 〰️ 

 

왜 이렇게 사용자별로 제한하는 것일까요❓ 

리눅스는 다중 사용자 운영체제이며, 사용자별로 할당량이 따로 정해져있지 않습니다.

따라서, 한 명이 용량을 전부 사용해도 문제가 되지 않습니다.

이를 막기 위해서 디스크 쿼터라는 개념을 도입한 것이죠.

 

쿼터는 사용자별, 파일 시스템별로 동작되며, 그룹 단위로도 용향을 제한할 수 있으며 웹호스팅 서비스를 하는 경우에 유용합니다.

 

 

💼 디스크 쿼터 설정하기

 

참고 : 우분투에서 디스크 쿼터를 설정하려면 먼저 quota 패키지를 설치해야합니다❗️ 

sudo apt install quota

sudo apt install quota

 

 

 

🧷 /etc/fstab 

 

$ cat /etc/fstab
/dev/sdb1  /QUOTA  ext4  defaults, usrjquote=aquota.user, jqfmt=vfsv0  1  2

 

디스크 쿼터와 관련된 정보는 /etc/fstab에 담겨있습니다.

설정된 옵션이 무슨 의미를 가지는지 몇 개만 확인해볼게요.

 

옵션 적용 대상 설명
quota fsfold, vfsv0 ✔️사용자 할당량 사용
gquota xfs ✔️그룹 할당량 사용
usrquota 모든 유형 ✔️사용자 할당량 사용
grpquota 모든 유형 ✔️그룹 할당량 사용
usrjquota=파일명 vfsv0 ✔️저널 사용자 할당량 사용.
✔️jqfmt 옵션의 스팩 및 할당량 데이터베이스 파일 이름이 필요
✔️일반적으로 사용되는 파일명은 aquota.user
grpjquota=파일명 vfsv0 ✔️저널 사용자 할당량 사용.
✔️jqfmt 옵션의 스팩 및 할당량 데이터베이스 파일 이름이 필요
✔️일반적으로 사용되는 파일명은 aquota.group
jqfmt=format vfsv0 ✔️usrjquota 또는 grpjquote가 지정될 때 사용된 할당량의 형식
✔️현재는 vfsv0가 유일하게 지원되는 형식

 

위의 표만 보면 혼란스러운데요,,,,ㅠㅜ

어떻게 적용하면 될까요❓ 

 

사용자 쿼터만 지정하려면 usrjquota=aquota.user,jqfmt=vfsv0 와 같이 설정해주면 됩니다.

그룹 쿼터만 지정하려면 grpjquota=aquota.grp,jqfmt=vfsv0 와 같이 설정해주면 됩니다 〰️ 

 

둘 다 지정하려면 어떻게 해야할까요❓ 

usrjquota=aquota.user,grpjquota=aquota.grp,jqfmt=vfsv0 으로 설정하면 됩니다 〰️ 

 

 

 

/etc/fstab 파일을 변경한 후, 적용시키고 싶다면 mount를 다시 해줘야하는데요.

두 번째 단계를 같이 해봅시다 〰️ 

 

 

🧷  remounting

$ mount -o remount /QUOTA
$ mount
/dev/sdb1 on /QUOTA type ext4 (rw, usrjquota=aquota.user, jqfmt=vfsv0)

 

 

🧷  쿼터 파일 삭제

이번에는 쿼터 파일을 다시 작성하기 위해 기존의 쿼터 파일을 삭제해볼게요.

하나씩 살펴보도록 할까요❓ 

 

디스크 쿼터 기능 해제 : quotaoff

$ cd /QUOTA		
$ quotaoff -augp
group quota on /QUOTA (/dev/sdb1) is off
user quota on /QUOTA (/dev/sdb1) is off

 

파일 시스템의 쿼터 관련 점검 : quotacheck

$ quotacheck -augmn

 

생성된 쿼터 파일 삭제

$ rm -rf aquota.*

 

명령어는 이후에 더 자세히 알아보도록 하겠습니다.

 

 

 

🧷 쿼터 데이터베이스 생성

 

먼저, 디스크 쿼터 파일 생성 후 권한 설정을 해줍니다.

$ touch aquota.user aquota.group
$ chmod 400 aquota.*
$ quotacheck -augmn

 

참고로 aquota.user 파일은 사용자 쿼터 파일이고, aquota.group 파일은 그룹 쿼터 파일입니다 〰️ 

다음으로 쿼터 관련 점검 후 쿼터 서비스를 개시합니다.

명령어 quotaon은 쿼터 서비스를 활성화합니다.

 

$ quotaon -avug
/dev/sdb1 [/QUOTA]: user quotas turned on

 

이제 꺼졌던 디스크 쿼터가 다시 켜졌습니다.

 

 

🧷 사용자별 쿼터 지정

 

$ edquota -u gngsn
Disk quotas for user gngsn (uid 502):
  Filesystem      blocks     soft    hard   inodes   soft     hard
  /dev/sdb1            0    10240   15360       0      0        0

 

각 필드별로 보여주는 데이터는 어떤 의미를 가질까요❓ 

 

Filesystem : 사용자별 쿼터를 할당하는 파일 시스템

blocks : 현재 사용자가 사용하는 디스크 블록 (KB)

soft : 한 파티션에서 사용자가 사용할 수 있는 최대 용량. 유예기간 내에 사용자는 사용 용량 초과에 대해 경고를 받지만, hard보다 적으면 초과 가능.

hard : 유예 기간이 설정되어 있을 때만 동작. 디스크 사용에 있어 정대적인 사용 제한으로 용량 초과 불가

indes : 현재 사용자가 사용하는 inodes(파일과 디렉터리) 개수

soft : 사용자에게 지정된 파일과 디렉터리 생성 개수

 

유예기간 grace❓ 

첫 번째 soft의 설명글에 유예기간이 나오는데요.

soft limit용량을 넘은 후부터 적용되는 어느정도의 한계선입니다. 시간은 sec, min, hour, day, month 단위이며, 확인하고 싶다면 아래의 edquota (-t)를 참고하세요 〰️ 

 

 

 

 

 

 

 

⚡️ 디스크 쿼터 명령어

자, 이제부터는 위에서 나온 명령어들을 정리해볼게요.

 

✔️ quotaoff

  $ quotaoff [option]options

-a :  파티션 정보 출력

-u :  사용자 쿼터 비활성화

-g :  그룹 쿼터 비활성화

-v :  메시지 출력

 

쿼터 서비스를 비활성화 하는 역할을 합니다.

 

 

 

✔️ quotacheck

  $ quotacheck [option] options

-a :  파티션 정보 출력 (all)

-u :  사용자 쿼터 비활성화 (user)

-g :  그룹 쿼터 비활성화 (group)

-m :  재마운트를 생략 (no-remount)

-n :  첫 번째 검색된 것을 사용 (user-first)

-p :  처리 결과를 출력(print-state)

-v :  파일 시스템의 상태를 보여줌(verse)

 

파일 시스템의 디스크 사용상태를 검색합니다. quota 기록 파일인 'quota.user, quota.group'이나  'aquota.user, aquota.group' 파일들을 최근 상태로 갱신하기 위해 사용합니다.

 

 

 

✔️ edquota

  $ edquota [option] [계정명 or 그룹명] options

-u :  사용자 디스크 할당량 설정

-g :  그룹 디스크 할당량 설정

-t :  디스크 할당량 유예 기간 설정

-p :  디스크 할당량 설정을 다른 사용자와 동일하게 설정

 

편집기를 이용하여 사용자나 그룹에 디스크 사용량을 할당하는 명령어입니다.

 

예시를 보면,

$ sudo edquota -p user1 user4
$ quota -p user4

 

user1의 디스크 할당량을 user4에게 동일하게 설정하는 명령어와 쿼터 정보를 확인하는 quota 명령어입니다.

 

 

 

✔️ setquota

  $ setquota [option] [계정명 or 그룹명] [Block soft limit] [Block hard limit] [inode soft limit] [inode hard limit] [파티션명] options

-u :  사용자 디스크 할당량 설정

-g :  그룹 디스크 할당량 설정

-a :  해당 시스템의 모든 설정

-t :  유예 기간을 초단위로 설정

 

편집기가 아닌 명령행에서 직접 사용자나 그룹에 디스크 사용향을 할당하는 명령어입니다

 

 

 

 

쓰는데 시간이 정말 많이 들었어요,,, 그래도 확실히 개념을 정리하고 나니 좋네요~.~

다음에는 파일시스템에 대해 작성해볼 예정입니다 ^~^

'BACKEND > Linux' 카테고리의 다른 글

LINUX, shell 알아보기  (0) 2020.10.11
LINUX, 특수 권한  (2) 2020.09.03
LINUX, 권한 관리하기  (0) 2020.08.28
정규식, 제대로 사용하기 - 심화  (4) 2020.08.16
정규식, 어렵지 않게 사용하기 - 기본  (0) 2020.07.07