Linux

[Linux] 권한 및 그룹 설정

이깅 2025. 6. 2. 16:54
반응형

 

  1. 소유권(Ownership) 관련 명령어

 

[chown]

  • 파일과 디렉터리의 사용자 소유권과 그룹 소유권을 변경
  • 형식 : #chown [옵션] 소유자[:그룹명] 파일명
  • -R : 하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 소유권 변경

 

[chgrp]

  • change group을 줄인 명령어로 파일이나 디렉터리의 그룹 소유권을 변경
  • chown은 소유자와 소유 그룹을 모두 변경할 수 있지만 chgrp는 그룹 소유권만 변경할 수 있다
  • 형식 : #chgrp [옵션] 그룹명 파일명
  • -R : 하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 그룹 소유권 변경

 

 

 

2. 허가권(permission)과 관련된 명령어

 

  • ls -l로 파일 유형과 허가권을 알 수 있다
  • 파일 허가권의 첫 번째 자리는 파일 유형을 기호로 나타낸다
  • 파일은 일반 파일, 디렉터리 파일, 특수 파일로 나뉜다
  • 명령어 ls -l /dev를 실행하면 파일 유형이 b나 c인 파일들을 확인할 수 있다.

 

 
기호
파일 유형
-
일반파일
d
디렉터리 파일



b
  • 블록 단위로 읽고 쓰는 블록 장치 특수 파일
  • 블록 장치 : 하드디스크, 플로피디스크, CD/DVD 등의 저장장치
c
  • 문자 단위로 읽고 쓰는 문자 장치 특수 파일
  • 문자 장치로는 마우스, 키보드, 프린터 입출력 장치
l
  • 기호적 링크로 바로가기 아이콘 역할 수행
  • 연결되어 있는 파일과 실제 파일은 다른 곳에 존재
p
파이프
s
소켓

 

 

  • 파일 허가권의 두 번째 자리에서 열 번째 자리는 파일 접근 권한을 정의한다.
  • 리눅스는 사용자별로 파일 권한을 부여한다.
  • 파일 사용자는 파일 소유자(owner), 그룹 소속자(group), 기타 사용자(others 또는 public)으로 구분한다
  • 파일 권한을 읽기(read), 쓰기(write), 실행(execute)이 있다
  • 읽기, 쓰기 또는 실행의 접근 제한 표시는 하이픈(-)으로 나타낸다
  • 사용자별 권한은 기호 모드(symbolic mode) 또는 8진수 숫자 모드(numeric mode)로 표시 한다
  • r(4), w(2), x(1)

 

 

일반 파일
디렉터리 파일
특수 파일
읽기(r)
파일 내용 읽기
디렉터리 내 파일 목록 읽기
read()로 파일 읽기
쓰기(w)
파일 수정/삭제
디렉터리 내 파일 생성/삭제 기능
write()로 파일 내용 변경
실행(x)
파일 실행
cd 명령을 이용하여 디렉터리로 이동 가능
권한 의미 없음

 

 

 

 

[chmod]

  • 파일이나 디렉터리의 접근 허가권을 변경하는 명령어이다
  • 형식 : #chmod [옵션] 파일명
  • -R : 하위 디렉터리에 포함되어 있는 모든 디렉터리 및 파일의 권한 변경
  • 권한 변경은 숫자 or 기호로 변경할 수 있다

 

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

 

 

 

[umask]

  • 명령어 umask는 새로 생성되는 파일이나 디렉터리의 기본 허가권 값을 지정한다
  • 파일의 기본 권한은 666, 디렉터리의 기본 권한은 777 이다.
  • 명령어 umask는 디폴트 권한 값을 변경한다
  • 형식 : umask[옵션][값]
  • - S : umask 값을 문자로 표기
  • 파일이나 디렉터리 생성 시 디폴트 권한 값에서 설정한 umask 값을 뺀 값을 기본 허가권을 설정한다
  • 예를 들어, umask가 022인 경우 디폴트 파일 권한은 644(666-022), 디폴트 디렉터리 권한은 755(777-022)로 변경된다

 

 

 

3. 특수 권한

 

[SetUID와 SetGID]

  • 프로세스가 실행되는 동안 해당 프로세스의 root 권한을 임시로 가져오는 기능이다
  • 프로세스가 사용자보다 높은 수준의 접근을 요구할 때 파일 접근 제한으로 인해 원활한 기능을 제공할 수 없기 때문에 이러한 문제점을 해결하기 위한 방법이다
  • SetUID의 경우 사용자가 사용할 때만 소유자 권한으로 파일을 실행시키고, SetGID의 경우 사용자가 사용할 때만 그룹 권한으로 파일을 실행한다
    • SetUID는 프로그램을 실행하는 동안 프로세스는 파일의 소유자과 같은 권한으로 실행된다
    • SetGID는 프로그램을 실행하는 동안 프로세스는 파일의 그룹과 같은 권한으로 실행된다
    • SetGID 권한이 명시된 디렉터리에 생성되는 모든 하위 디렉터리나 파일도 SetGID 권한을 가진다
  • 특수 권한의 절대적인 표기 방법은 4자리로 나타낸다
 

코드
절대값
설명
SetUID
s
4000
프로세스 실행 당시 UID로 설정
SetGID
s
2000
프로세스 실행 당시 GID로 설정
Sticky bit
t
1000
실행 후에도 메모리를 점유하도록 설정

 

  • SetUID 소문자 s와 대문자S
    • 실행 파일에 setuid를 설정하면 소문자s가 되고 정상적으로 실행할 수 있다
    • 실행 파일이 아닌데 setuid를 설정하면 대문자S가 되고 실행할 수 없다

 

 

 

[Sticky bit]

  • 일반적으로 공용 디렉터리를 사용할 때 sticky bit를 설정하여 사용한다
  • sticky bit가 설정되어 있는 디렉터리 안의 내용은 해당 파일의 소유자나 root만이 변경이 가능하게 하여 공용 디렉터리라도 권한에 제약을 두어 다른 사용자들의 파일을 보호하기 위한 목적으로 만든 것이다
  • 사용자 권한을 지정하기 어려운 프로그램들이 일시적으로 특정 디렉터리에 파일을 생성하고 삭제하도록 이용된다
  • 특정 응용 프로그램이 다른 응용 프로그램에서 생성한 파일을 삭제하지 못하는 권한 설정을 한다
  • 설정된 디렉터리에는 누구든 접근 가능하고 파일을 생성할 수 있다
  • 생성된 sticky bit 파일을 삭제 시에는 소유자(파일 생성자)와 관리자만 지울 수 있다. 다른 사용자는 자신의 소유가 아닌 파일을 삭제할 수 없다
    • sticky bit가 적용된 디렉터리 내에 파일을 생성하는 것은 누구나 가능하지만 삭제는 생성자 본인과 관리자만 가능하다
    • 일반적으로 sticky bit로 설정되는 디렉터리는 /tmp 안에 생성한다.

 

 

4. 디스크 쿼터

 

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

 

[1단계]

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

[2단계]

  • 재마운팅(remounting) 실행 후 확인
  • mount -o remount /QUOTA

 

[3단계]

  • 마운트된 쿼터를 끄고 생성된 파일 삭제
    • quotaoff -augp : 디스크 쿼터 기능 해제
    • quotacheck -augmn : 파일 시스템의 쿼터 관련 점검
    • rm -rf aquota.* : 생성된 쿼터 파일 삭제

 

[4단계]

  • 쿼터 데이터베이스 생성
    • touch aquota.user aquota.group : 디스크 쿼터 파일 생성 후 권한 설정
    • quotaon -avug : 쿼터 관련 점검 후 쿼터 서비스 개시

 

[5단계]

  • 사용자별 쿼터 지정
 
필드
설명
Filesystem
사용자별 쿼터는 할당하는 파일 시스템
blocks
  • 현재 사용자가 사용하는 디스크 블록
  • 기본 단위는 KB
soft
  • 소프트 사용한도
  • 사용자가 사용할 수 있는 최대 용량
  • 한 파티션에서 사용자가 사용할 수 있는 최대 용량
  • 유예기간 내에 사용자는 사용 용량 초과에 대해 경고를 받음
  • 지정 용량이 hard 값보다 적을 때 지정한 유예기간 동안은 초과 가능
hard
  • 하드 사용한도
  • 유예 기간이 설정되어 있을 때에만 동작
  • 디스크 사용에 있어 절대적인 사용 제한
  • hard 용량 초과 불가
inodes
현재 사용자가 사용하는 inode(파일과 디렉터리) 개수
soft
사용자에게 지정된 파일과 디렉터리 생성 개수

 

 

  • 유예 기간(grace period)
    • 사용자의 사용량이 soft limit 용량을 넘은 후부터 적용되는 시작 제한이다
    • 시간은 sec(onds), min(utes), hour(s), day(s), week(s), month(s) 단위이다
    • edquota -t 명령을 실행하면 유예 기간을 보거나 수정할 수 있다

 

 

 

[6단계]

  • 쿼터 현재 상황 점검
    • used : 현재 사용량
    • soft : 현재 설정된 soft limit
    • hard : 현재 설정된 hard limit
    • grace : soft limit에 지정된 용량 초과 시 남은 유예기간 표시

 

 

[디스크 쿼터 관련 명령어]

 

  • quotaoff : 쿼터 서비스를 비활성화한다
    • -a : 파티션 정보 출력
    • -u : 사용자 쿼터 비활성화
    • -g : 그룹 쿼터 비활성화
    • -v : 메시지 출력

 

  • quotacheck : 파일 시스템의 디스크 사용 상태를 검색한다
    • -a : 모든 파일 시스템을 체크(all)
    • -u : 사용자 쿼터 관련 체크(user)
    • -g : 그룹 쿼터 관련 체크(group)
    • -m : 재마운트를 생략(no-remount)
    • -n : 첫 번째 검색된 것을 사용(use-frist)
    • -p : 처리 결과를 출력(print-state)
    • -v : 파일 시스템의 상태를 보여줌(verse)

 

  • edquota : 편집기를 이용하여 사용자나 그룹에 디스크 사용량을 할당하는 명령어이다
    • 형식 : #edquota [옵션] [계정명 또는 그룹명]
    • -u : 사용자 디스크 할당량 설정
    • -g : 그룹 디스크 할당량 설정
    • -t : 디스크 할당량 유예기간 설정
    • -p : 디스크 할당량 설정을 다른 사용자와 동일하게 설정

 

  • setquota : 편집기가 기반이 아닌 명령행에서 직접 사용자나 그룹에 디스크 사용량을 할당하는 명령어이다
    • -u : 사용자 디스크 할당량 설정
    • -g : 그룹 디스크 할당량 설정
    • -a : 해당 시스템의 모든 설정
    • -t : 유예기간을 초(sec) 단위로 설정

 

반응형

'Linux' 카테고리의 다른 글

[Linux] 부트로더와 GRUB  (1) 2024.12.08
[Linux] RAID  (0) 2024.12.08
[Linux] 파티션의 특징과 종류  (0) 2024.12.08
[Linux] 디렉터리 별 저장 내용  (0) 2024.11.14