Linux Permission denied 오류란?
Linux Server를 운영하다 보면 파일 실행, 수정, 삭제, 서비스 실행 과정에서 아래와 같은 오류를 자주 만나게 됩니다.
Permission denied
이 오류는 현재 사용자가 해당 파일이나 Directory에 접근할 권한이 없다는 의미입니다.
Linux는 보안을 위해 모든 파일과 Directory에 권한 정보를 저장하고 있으며, 사용자는 허용된 범위 내에서만 데이터를 사용할 수 있습니다.
기본 구조:
User↓Permission 확인↓Owner / Group / Other 확인↓Access 허용 또는 거부
Linux 파일 권한 구조
Linux에서는 모든 파일과 Directory에 권한 정보가 설정됩니다.
확인 명령:
ls-l
결과:
-rwxr-xr-x 1 root root 1024 app.sh
구조:
파일 유형↓Owner 권한↓Group 권한↓Other 권한
Linux Permission 종류
Linux 권한은 크게 세 가지로 나뉩니다.
| 권한 | 의미 |
|---|---|
| r (read) | 읽기 |
| w (write) | 쓰기 |
| x (execute) | 실행 |
예:
rwx
의미:
- 읽기 가능
- 수정 가능
- 실행 가능
Owner, Group, Other란?
Linux는 파일 접근 대상을 세 가지로 구분합니다.
-rwxr-xr-xOwner → rwxGroup → r-xOther → r-x
| 대상 | 설명 |
|---|---|
| Owner | 파일 소유자 |
| Group | 소유 그룹 |
| Other | 나머지 사용자 |
chmod란?
chmod(Change Mode)는 Linux 파일 권한을 변경하는 명령어입니다.
기본 형식:
chmod 권한 파일명
예:
chmod755 script.sh
파일 권한을 변경합니다.
chmod 숫자 권한 이해하기
Linux 권한은 숫자로 표현할 수 있습니다.
| 권한 | 숫자 |
|---|---|
| 읽기(r) | 4 |
| 쓰기(w) | 2 |
| 실행(x) | 1 |
합산 방식:
| 권한 | 값 |
|---|---|
| r– | 4 |
| rw- | 6 |
| rwx | 7 |
chmod 755 의미
가장 많이 사용하는 권한 중 하나입니다.
chmod755 file
구조:
Ownerrwx = 7Groupr-x = 5Otherr-x = 5
의미:
- 소유자 읽기/쓰기/실행 가능
- 다른 사용자는 읽기/실행 가능
chmod 644 의미
일반 파일에서 많이 사용됩니다.
chmod644 index.html
구조:
Ownerrw- = 6Groupr-- = 4Otherr-- = 4
웹 서버 파일에서 자주 사용됩니다.
chmod 777 사용 주의
chmod777 file
모든 사용자에게 모든 권한을 부여합니다.
권한:
Owner rwxGroup rwxOther rwx
문제를 임시 해결할 수 있지만 보안 위험이 있습니다.
운영 Server에서는 사용을 최소화해야 합니다.
chown이란?
chown(Change Owner)은 파일 소유자를 변경하는 명령어입니다.
기본 형식:
chown 사용자 파일
예:
chown nginx nginx.conf
파일 소유자를 nginx 사용자로 변경합니다.
chown Group 변경
그룹까지 변경:
chown user:group file
예:
chown www-data:www-data website
Web Server 운영 환경에서 자주 사용됩니다.
Permission denied 발생 주요 원인
파일 읽기 권한 부족
예:
cat config.txt
결과:
Permission denied
원인:
- 읽기 권한 없음
해결:
chmod+r config.txt
실행 권한 부족
Script 실행 시 자주 발생합니다.
예:
./backup.sh
결과:
Permission denied
원인:
실행 권한 없음
확인:
ls-l backup.sh
해결:
chmod+x backup.sh
Directory 접근 권한 문제
Directory는 실행 권한(x)이 필요합니다.
확인:
ls-ld /data
해결:
chmod755 /data
Root 권한이 필요한 경우
System 파일 수정 시 일반 사용자는 접근할 수 없습니다.
예:
vim /etc/hosts
해결:
sudovim /etc/hosts
sudo 권한 문제
sudo 사용자가 등록되지 않은 경우:
user is not in the sudoers file
발생합니다.
확인:
groups username
sudo 그룹 추가:
usermod -aGsudo username
Linux Permission과 SSH
SSH 접속 후 파일 수정이 안 되는 경우 권한 문제일 수 있습니다.
확인:
ls-l
확인 항목:
- Owner
- Group
- Permission
Docker Permission 문제
Docker 환경에서도 Permission 오류가 자주 발생합니다.
구조:
Host File↓Volume Mount↓Container Process
예:
docker run -v /data:/app nginx
Host Directory 권한과 Container User 권한이 맞지 않으면 오류가 발생합니다.
해결:
chown-R user:group /data
Kubernetes Volume Permission 문제
Kubernetes에서도 Persistent Volume 권한 문제가 발생할 수 있습니다.
구조:
Pod↓Volume↓File Permission
해결 방법:
- securityContext 설정
- fsGroup 설정
- Volume Owner 변경
예:
securityContext: fsGroup: 1000
Permission 오류 확인 순서
장애 발생 시 아래 순서대로 확인합니다.
오류 발생↓파일 위치 확인↓ls -l 확인↓Owner 확인↓Permission 확인↓chmod/chown 적용
Linux Permission 관련 주요 명령어
| 명령어 | 설명 |
|---|---|
| ls -l | 권한 확인 |
| chmod | 권한 변경 |
| chown | 소유자 변경 |
| chgrp | 그룹 변경 |
| sudo | 관리자 권한 실행 |
| id | 사용자 정보 확인 |
Permission 관리 Best Practice
권장 방법:
- 최소 권한 원칙 적용
- chmod 777 사용 제한
- 서비스별 사용자 분리
- 중요 파일 권한 관리
- 정기적인 권한 점검
Linux Permission 장점
| 장점 | 설명 |
|---|---|
| 보안 | 비인가 접근 차단 |
| 관리 | 사용자별 권한 제어 |
| 안정성 | 파일 보호 |
| 운영성 | Server 관리 효율 증가 |
자주 묻는 질문
chmod 777을 사용하면 왜 위험한가요?
모든 사용자가 파일을 수정하거나 실행할 수 있기 때문에 보안 취약점이 발생할 수 있습니다.
chmod와 chown 차이는 무엇인가요?
chmod는 권한을 변경하고 chown은 파일 소유자를 변경합니다.
Permission denied는 Linux만 발생하나요?
Linux뿐 아니라 Unix 계열 운영체제와 Container 환경에서도 발생할 수 있습니다.
마무리
Linux Permission denied 오류는 Server 운영에서 매우 자주 발생하는 문제입니다.
원인을 정확히 해결하려면 단순히 권한을 777로 변경하는 것이 아니라 Owner, Group, Permission 구조를 이해해야 합니다.
| 구성 요소 | 역할 |
|---|---|
| chmod | 권한 변경 |
| chown | 소유자 변경 |
| Owner | 파일 관리자 |
| Group | 사용자 그룹 |
| Permission | 접근 제어 |
Linux 파일 권한 구조를 이해하면 Web Server, Docker, Kubernetes, Cloud 환경에서 발생하는 다양한 접근 오류를 빠르게 분석하고 해결할 수 있습니다.