[Linux] File System 2

JIWON·2025년 5월 20일

Linux

목록 보기
7/20
post-thumbnail

🔐 파일 접근 권한 관리

1️⃣ 파일 속성

  • 리눅스는 기본적으로 다중 사용자 시스템이므로 여러명의 사용자가 같은 시스템에서 작업을 수행
  • 사용자의 시스템에 마음대로 접근할 수 없도록 보안 기능을 제공
  • 파일의 접근 권한은 파일이 가지고 있는 속성 중 하나
  • ls -l 명령을 이용하면 접근 권한을 확인 가능
    • - : 파일의 종류 (- : 일반 파일, d : 디렉토리)
    • rw-r--r-- : 파일을 읽고 쓸 수 있는 권한
    • 숫자 : 하드 링크의 개수(하드링크가 2 이상인 경우 현재파일을 지워도 내용이 남아있음)
    • root : 파일 소유자의 로그인 ID
    • root : 파일이 속한 그룹
    • 숫자 : 파일의 크기
    • 날짜 및 시간 : 파일이 마지막으로 수정된 날짜
    • 파일 이름 : 파일이름

2️⃣ 파일 접근 권한

  • 종류 : 읽기 권한, 쓰기권한 실행권한

    파일디렉토리
    읽기파일을 읽거나 복사 가능ls 명령으로 디렉토리 목록을 볼 수 있음
    쓰기파일을 수정, 이동, 삭제 가능
    (디렉토리에 쓰기권한 필요)
    파일을 생성하거나 삭제할 수 있음
    실행파일을 실행할 수 있음
    (셸 스크립트 파일, 실행파일)
    cd 명령을 사용할 수 있음
    파일을 이동하거나 복사할 수 있음

💠 권한 표기 방법

읽기 - r
쓰기 - w
실행 - x
권한 없음 - -

사용자 카테고리가 3개이고 권한이 3개라서 9개의 문자로 표현

  • 소유자 권한 (3) : rw- 읽기, 쓰기 권한 o
  • 그룹 권한 (3) : r-- 읽기 권한 o
  • 기타사용자 권한 (3) : r-x 읽기, 실행 권한 o

💠 접근 권한 변경 명령 : chmod

chmod [옵션] [파일이나 디렉토리]

  • 옵션

    • R : 디렉토리인 경우 하위 디렉토리까지 적용
  • 변경할 때는 기호 모드숫자 모드를 모두 사용할 수 있다.

🔸 기호모드 사용법

사용자 카테고리 문자
- u : 소유자
- g : 그룹
- o : 기타
- a : 전체

연산자 기호
- + : 권한 부여
- - : 권한 제거
- = : 권한 설정

접근 권한 문자

  • r : 읽기
  • w : 쓰기
  • x : 실행

->예시
u+w : 소유자에게 쓰기 권한 부여
u-x : 소유자에게 실행 권한 취소
+wx : 모든 유저에게 쓰기와 실행 권한 부여
u=rwx : 소유자에게 읽기,쓰기,실행 권한 부여

🔸 기호모드 실습

  1. /etc/hosts 파일을 text.txt 로 복사
    cp /etc/hosts text.txt
  2. 권한 확인
    ls -l
  3. 그룹에 쓰기와 실행 명령 권한 부여
    chmod g+wx text.txt
  4. 소유자의 쓰기 권한 제거
    chmod u-w text.txt
  5. 기타사용자에게 실행 권한 부여
    chmod o+x text.txt

🔸 숫자모드 사용법

각각의 권한을 하나의 비트로 보고 1은 권한 부여, 0은 권한 취소

  • 3개씩 묶어서 8진수로 표현
  • 예시:
    rwx -> 111 -> 4 + 2 + 1 = 7
    rw- -> 110 -> 6

🔸 숫자모드 실습

  1. text.txt의 모든 사용자에게 읽기권한 부여
    chmod 444 text.txt
  2. text.txt의 소유자에게 읽기쓰기, 그룹에 읽기,실행, 기타 읽기 권한 부여
    chmod 654 text.txt

3️⃣ 기본 접근 권한 설정

💠 현재 기본 접근 권한 확인 ls -l

  1. han.txt 파일을 빈파일로 생성
touch han.txt
  1. 파일의 접근 권한을 확인
ls -l

결과 :

  • 파일
  • 소유자 : 읽기, 쓰기
  • 그룹사용자 : 읽기, 쓰기
  • 기타사용자 : 읽기
  1. tmep 라는 디렉토리 생성
mkdir temp
  1. 디렉토리 접근권한 확인
ls -l

결과 :

  • 디렉토리
  • 소유자 : 읽기,쓰기,실행
  • 그룹 사용자 : 읽기,쓰기,실행
  • 기타 사용자 : 읽기, 실행

💠 기본 접근 권한 확인 및 변경 : umask

umask [옵션] [마스크값]

  • 옵션
    • S : 마스크 값을 문자로 출력

결과 : 0002 -> 775로 해석
맨 앞의 0은 일단 제외하고 3개의 값이 마스크 값
마스크값은 반대로 해석해야 하는데 없는 권한이 1 이고 있는 권한은 0

이 결과는 디렉토리에 대한 권한이고 파일에 대한 권한은 x권한을 빼면 된다

🔸 디렉토리 권한 변경

  • 변경을 할 때는 777에서 필요한 권한 설정 값을 빼면 된다
  • 예) 소유자에게는 모든 권한을 부여, 나머지 사용자는 아무런 권한 X (700)
    마스크 설정 : 777 - 700 = 077
umask 077

  • 파일을 생성하고 확인하면 실행 권한은 부여되지 않습니다
  • 파일을 만들 때 실행 권한을 부여하지 않는 이유는 보안 상의 문제 때문이다.

🔸 원래대로 되돌리기

umask 002

4️⃣ 특수 접근 권한 설정

  • umask 명령으로 확인한 숫자 중 첫번째 숫자에 대한 부분

  • 맨 앞자리:
    0 : 일반적인 접근 권한 설정
    1 : 스티키 비트
    2 : SetGID
    4 : SetUID

💠 SetUID

  • 해당 파일을 실행하면 파일을 실행한 사용자의 권한이 아니라 파일 소유자의 권한이 적용

🔸 SetUID 적용

  1. 파일 만들기
touch set.exe
  1. 실행권한 부여
chmod 755 set.exe
  1. 권한 확인

  2. 파일에 SetUID 설정

chmod 4755 set.exe

  • SetUID가 설정되면 소유자의 실행 권한에 x가 아닌 s가 표시되는데 set.exe 파일을 실행하면 항상 jiwoni의 권한을 가진다는 의미
  • 이렇게 만들어진 명령으로 passwd (비밀번호를 수정)
  • 실행 할 때 일시적으로 root 사용자가 되어서 자신의 비밀번호를 변경할 수 있도록 만들어 둔 것이다.
  • SetUID는 대부분의 경우 root 권한을 일시적으로 부여해서 명령을 수행하게끔 하기 위해서 만든 것

💠 SetGID

  • 실행 하는 동안 그룹의 권한을 가지고 실행이 된다
  • 2 로 설정

💠 스티키 비트

  • 디렉토리에 설정
  • 디렉토리에 설정하면 이 디렉토리에는 누구나 파일을 생성할 수 있음
  • 이렇게 생성된 파일이나 디렉토리의 소유자는 생성한 계정이 소유자가 됨
  • 이렇게 만들어진 디렉토리가 /tmp 디렉토리 이다

0개의 댓글