Notice
Recent Posts
Recent Comments
반응형
오늘도 공부
Linux 파일 권한(File Permissions) 완벽 가이드 본문
반응형
CodeDeck - 개발자를 위한 코드 학습 카드 뉴스
프로그래밍 언어와 프레임워크를 카드 뉴스 형태로 쉽게 배우는 개발자 학습 플랫폼
www.codedeck.kr
목차
- Linux 파일 권한 기본 개념
- 권한 표기법의 3가지 방식
- 권한별 상세 설명
- 실전 예제
- 권한 변경 명령어
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. 보안 팁
- 절대 777 권한을 남용하지 마세요
- 모든 사용자가 모든 작업을 할 수 있어 보안에 취약합니다
- 중요한 파일은 600 또는 400으로 설정
- SSH 키: chmod 600 ~/.ssh/id_rsa
- 비밀번호 파일: chmod 600 passwords.txt
- 스크립트는 755, 문서는 644
- 실행 파일: chmod 755 script.sh
- 일반 문서: chmod 644 document.txt
- 디렉토리는 최소 x(실행) 권한 필요
- 디렉토리 접근을 위해서는 실행 권한이 필수입니다
반응형
'개발상식' 카테고리의 다른 글
| SEO 용어 완벽 가이드 (0) | 2025.11.13 |
|---|---|
| 좋은 Git 커밋 메시지 작성법 (0) | 2025.11.12 |
| README 파일 작성 완벽 가이드 - 실전 예제와 함께 (0) | 2025.11.12 |
| 리눅스 필수 명령어 완벽 가이드 📚 (0) | 2025.11.03 |
| 대규모 시스템 설계 블루프린트: 완벽 가이드 (0) | 2025.10.28 |
