Linux Permission denied 오류 원인과 해결 방법! 파일 권한과 chmod 구조 이해하기

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
rwx7

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 환경에서 발생하는 다양한 접근 오류를 빠르게 분석하고 해결할 수 있습니다.

함께 보면 좋은 글

댓글 남기기