Recent Posts
Recent Comments
반응형
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Archives
Today
Total
관리 메뉴

오늘도 공부

Linux 파일 권한(File Permissions) 완벽 가이드 본문

개발상식

Linux 파일 권한(File Permissions) 완벽 가이드

행복한 수지아빠 2025. 11. 17. 13:55
반응형

 

 

CodeDeck - 개발자를 위한 코드 학습 카드 뉴스

프로그래밍 언어와 프레임워크를 카드 뉴스 형태로 쉽게 배우는 개발자 학습 플랫폼

www.codedeck.kr

 

목차

  1. Linux 파일 권한 기본 개념
  2. 권한 표기법의 3가지 방식
  3. 권한별 상세 설명
  4. 실전 예제
  5. 권한 변경 명령어

1. Linux 파일 권한 기본 개념

Linux에서 모든 파일과 디렉토리는 세 가지 사용자 그룹에 대한 권한을 가지고 있습니다:

  • Owner (소유자): 파일을 생성한 사용자
  • Group (그룹): 파일이 속한 그룹의 사용자들
  • Other (기타): 그 외 모든 사용자

각 그룹은 다음 세 가지 권한을 가질 수 있습니다:

  • Read (r): 읽기 권한
  • Write (w): 쓰기/수정 권한
  • Execute (x): 실행 권한

2. 권한 표기법의 3가지 방식

2.1 이진법(Binary) 표기

각 권한을 비트로 표현합니다:

이진법 의미

001 실행만 가능 (Execute)
010 쓰기만 가능 (Write)
100 읽기만 가능 (Read)

2.2 8진법(Octal) 표기

이진법을 8진수로 변환한 값입니다:

이진법 8진법 계산 권한

000 0 0+0+0 권한 없음 (---)
001 1 0+0+1 실행만 (--x)
010 2 0+2+0 쓰기만 (-w-)
011 3 0+2+1 쓰기+실행 (-wx)
100 4 4+0+0 읽기만 (r--)
101 5 4+0+1 읽기+실행 (r-x)
110 6 4+2+0 읽기+쓰기 (rw-)
111 7 4+2+1 모든 권한 (rwx)

계산 방식:

  • Read(r) = 4
  • Write(w) = 2
  • Execute(x) = 1

2.3 문자열(String) 표기

직관적으로 권한을 표시합니다:

rwxrw-r-x

이를 3개씩 나누면:

  • rwx (Owner): 소유자는 읽기+쓰기+실행 가능
  • rw- (Group): 그룹은 읽기+쓰기 가능
  • r-x (Other): 기타 사용자는 읽기+실행 가능

3. 권한별 상세 설명

3.1 권한 조합표

8진법 문자열 의미

0 --- 아무 권한 없음
1 --x 실행만 가능
2 -w- 쓰기만 가능
3 -wx 쓰기와 실행 가능
4 r-- 읽기만 가능
5 r-x 읽기와 실행 가능
6 rw- 읽기와 쓰기 가능
7 rwx 모든 권한 (읽기+쓰기+실행)

3.2 파일과 디렉토리에서의 권한 의미

파일의 경우:

  • Read (r): 파일 내용을 읽을 수 있음
  • Write (w): 파일 내용을 수정하거나 삭제할 수 있음
  • Execute (x): 파일을 실행할 수 있음 (프로그램, 스크립트 등)

디렉토리의 경우:

  • Read (r): 디렉토리 내 파일 목록을 볼 수 있음 (ls 명령)
  • Write (w): 디렉토리 내에 파일을 생성, 삭제, 이름 변경할 수 있음
  • Execute (x): 디렉토리에 접근(cd)할 수 있음

4. 실전 예제

예제 1: 일반적인 문서 파일

-rw-r--r--  document.txt

분석:

  • 첫 번째 -: 일반 파일 (디렉토리면 d)
  • rw- (Owner, 6): 소유자는 읽기+쓰기 가능
  • r-- (Group, 4): 그룹은 읽기만 가능
  • r-- (Other, 4): 기타 사용자는 읽기만 가능

8진법 표기: 644

의미: 소유자만 수정할 수 있고, 나머지는 읽기만 가능한 일반 문서

예제 2: 실행 가능한 스크립트

-rwxr-xr-x  script.sh

분석:

  • rwx (Owner, 7): 소유자는 모든 권한
  • r-x (Group, 5): 그룹은 읽기+실행
  • r-x (Other, 5): 기타 사용자는 읽기+실행

8진법 표기: 755

의미: 모두가 실행할 수 있지만, 수정은 소유자만 가능

예제 3: 비밀 파일

-rw-------  secret.txt

분석:

  • rw- (Owner, 6): 소유자만 읽기+쓰기
  • --- (Group, 0): 그룹은 권한 없음
  • --- (Other, 0): 기타 사용자는 권한 없음

8진법 표기: 600

의미: 소유자만 접근 가능한 비밀 파일

예제 4: 공유 디렉토리

drwxrwxr-x  shared_folder/

분석:

  • 첫 번째 d: 디렉토리
  • rwx (Owner, 7): 소유자는 모든 권한
  • rwx (Group, 7): 그룹도 모든 권한
  • r-x (Other, 5): 기타 사용자는 읽기+접근만

8진법 표기: 775

의미: 팀원들은 자유롭게 파일을 추가/삭제할 수 있고, 외부인은 조회만 가능

예제 5: 웹 서버 파일

-rw-r--r--  index.html

8진법 표기: 644

의미: 웹 서버(소유자)는 수정 가능, 방문자(기타)는 읽기만 가능


5. 권한 변경 명령어

5.1 chmod (Change Mode)

문자열 방식:

# 소유자에게 실행 권한 추가
chmod u+x script.sh

# 그룹의 쓰기 권한 제거
chmod g-w document.txt

# 모든 사용자에게 읽기 권한 추가
chmod a+r readme.txt

# 기타 사용자의 모든 권한 제거
chmod o-rwx secret.txt

8진법 방식:

# 755 권한 설정 (rwxr-xr-x)
chmod 755 script.sh

# 644 권한 설정 (rw-r--r--)
chmod 644 document.txt

# 600 권한 설정 (rw-------)
chmod 600 secret.txt

# 777 권한 설정 (rwxrwxrwx) - 주의: 보안상 권장하지 않음
chmod 777 public_file.txt

재귀적 적용 (-R 옵션):

# 디렉토리와 모든 하위 파일에 적용
chmod -R 755 my_folder/

5.2 자주 사용하는 권한 조합

권한 8진법 사용 용도

-rw------- 600 개인 파일 (비밀번호, SSH 키)
-rw-r--r-- 644 일반 문서, HTML 파일
-rwx------ 700 개인 스크립트, 실행 파일
-rwxr-xr-x 755 공개 스크립트, 프로그램
drwx------ 700 개인 디렉토리
drwxr-xr-x 755 공개 디렉토리
drwxrwxr-x 775 팀 공유 디렉토리

6. 실습 예제

실습 1: 스크립트 파일 만들기

# 1. 스크립트 파일 생성
echo '#!/bin/bash' > hello.sh
echo 'echo "Hello, World!"' >> hello.sh

# 2. 현재 권한 확인
ls -l hello.sh
# 출력: -rw-r--r-- 1 user group 34 Nov 17 13:00 hello.sh

# 3. 실행 권한 추가
chmod +x hello.sh
# 또는: chmod 755 hello.sh

# 4. 변경된 권한 확인
ls -l hello.sh
# 출력: -rwxr-xr-x 1 user group 34 Nov 17 13:00 hello.sh

# 5. 스크립트 실행
./hello.sh

실습 2: 안전한 설정 파일 만들기

# 1. 설정 파일 생성
echo "password=secret123" > config.ini

# 2. 소유자만 읽기/쓰기 가능하도록 권한 설정
chmod 600 config.ini

# 3. 권한 확인
ls -l config.ini
# 출력: -rw------- 1 user group 20 Nov 17 13:00 config.ini

실습 3: 공유 프로젝트 디렉토리

# 1. 프로젝트 디렉토리 생성
mkdir project

# 2. 팀원들이 모두 사용할 수 있도록 권한 설정
chmod 775 project

# 3. 하위 파일에도 적용
chmod -R 775 project

# 4. 권한 확인
ls -ld project
# 출력: drwxrwxr-x 2 user group 4096 Nov 17 13:00 project

7. 권한 읽는 법 치트시트

-rwxrw-r--
│└┬┘└┬┘└┬┘
│ │  │  └─ Other (기타): r-- = 4
│ │  └──── Group (그룹): rw- = 6
│ └─────── Owner (소유자): rwx = 7
└───────── 파일 타입 (- = 일반 파일, d = 디렉토리)

전체 권한: 764

빠른 계산법:

  • r (읽기) = 4
  • w (쓰기) = 2
  • x (실행) = 1
  • 더하기만 하면 됩니다!

예: rw- = 4+2+0 = 6


8. 보안 팁

  1. 절대 777 권한을 남용하지 마세요
    • 모든 사용자가 모든 작업을 할 수 있어 보안에 취약합니다
  2. 중요한 파일은 600 또는 400으로 설정
    • SSH 키: chmod 600 ~/.ssh/id_rsa
    • 비밀번호 파일: chmod 600 passwords.txt
  3. 스크립트는 755, 문서는 644
    • 실행 파일: chmod 755 script.sh
    • 일반 문서: chmod 644 document.txt
  4. 디렉토리는 최소 x(실행) 권한 필요
    • 디렉토리 접근을 위해서는 실행 권한이 필수입니다

 

반응형