본문 바로가기
초보 IT 동동 리눅스 이야기

리눅스 chmod, chown, sudo 권한 오류 해결 방법 총정리

by 동동이y 2025. 5. 27.
728x90
반응형

[리눅스 Permission Denied 오류 해결 방법] chmod, chown, sudo로 권한 문제 완벽 정리!

리눅스를 사용하다 보면 꼭 한 번쯤은 마주치게 되는 오류! 바로 "Permission denied" 오류입니다.
처음에는 "엥? 내가 뭘 잘못한 거지?" 하고 당황할 수 있지만, 사실은 사용자 권한 문제일 가능성이 크답니다!

이 글에서는 리눅스에서 Permission denied 오류가 발생하는 원인과 이를 chmod, chown, sudo 명령어로 해결하는 방법을 예제와 함께 자세히 소개할게요.
리눅스 초보자도 이해할 수 있도록 설명하니, 걱정 마세요! 🔧😄


🔎 Permission denied 오류란?

리눅스는 사용자 권한과 보안을 매우 철저히 관리하는 운영체제입니다.
그래서 사용자가 어떤 파일을 실행하거나 디렉토리에 접근할 때 적절한 권한이 없으면 바로 아래와 같은 에러 메시지를 띄워요.

bash
 
bash: ./run.sh: Permission denied

또는 웹 서버를 사용할 때는 이런 메시지도 볼 수 있죠:

bash
 
Permission denied

이 오류 메시지는 결국, **"지금 사용자에게 이 작업을 수행할 권한이 없습니다"**라는 뜻이에요.
그럼 이제, 어떤 경우에 이런 문제가 생기고 어떻게 해결하면 되는지 단계별로 알아볼까요?


1. 실행 권한이 없는 경우 – chmod 명령어로 해결하기

리눅스에서 어떤 파일을 실행하려면 해당 파일에 실행 권한(x) 이 있어야 해요.
ls -l 명령어로 확인해보면 쉽게 알 수 있습니다.

bash
 
ls -l run.sh

결과가 -rw-r--r--처럼 나왔다면, 실행 권한이 없는 상태예요!

🔧 해결 방법:

bash
 
chmod +x run.sh

chmod 명령어는 파일 권한을 수정하는 명령어로, +x는 실행 권한을 추가하겠다는 의미예요.

💡 Tip: 자주 사용하는 키워드
chmod 권한 변경, 리눅스 실행 권한, permission denied chmod


2. 소유자나 그룹 권한 문제 – chown 또는 sudo 사용

파일의 소유자가 본인이 아닌 경우에도 Permission denied 오류가 발생할 수 있어요.

bash
 
ls -l 파일명

결과에서 다른 사용자 이름이 보인다면, 권한 문제가 생길 수 있습니다.

🔧 해결 방법:

bash
 
sudo chown 사용자이름 파일명

혹은 명령어 실행 시 sudo를 붙여 관리자 권한으로 실행해도 됩니다.

bash
 
sudo ./run.sh

💡 Tip: 검색어로 잘 노출되는 키워드
리눅스 소유자 변경, sudo 권한 오류, chown 명령어 사용법


3. 디렉토리에 대한 접근 권한 부족

파일 자체가 아닌, 그 파일이 있는 디렉토리에 권한이 없을 경우에도 오류가 발생합니다.

bash
 
ls -ld 디렉토리명

여기서 x 권한이 없다면, 디렉토리 내부 접근 자체가 차단된 상태예요.

🔧 해결 방법:

bash
 
sudo chmod +x 디렉토리명

경우에 따라 755, 775 등의 숫자 권한 부여 방식도 사용해보세요.


4. 읽기 전용 파일 시스템 – 외장하드, USB 오류

외장하드, USB, 또는 특정 파티션이 읽기 전용(read-only) 으로 마운트되어 있을 수 있어요.
이때는 아무리 권한이 있어도 파일을 수정할 수 없죠!

🔧 해결 방법:

  1. 마운트 상태 확인
bash
 
mount | grep 장치이름
  1. 쓰기 가능하게 재마운트
bash
 
sudo mount -o remount,rw /마운트/경로

💡 관련 키워드
리눅스 외장하드 권한, 읽기 전용 파일 시스템, mount remount rw


5. SELinux 또는 AppArmor 제한

리눅스 보안 정책 중 하나인 SELinux 또는 AppArmor가 특정 접근을 막고 있을 수 있어요.
이건 주로 CentOS, Fedora, Ubuntu Server 환경에서 자주 보입니다.

🔧 SELinux 상태 확인:

bash
 
getenforce

Enforcing 상태라면, 제한이 걸려있는 상태예요.

🔧 임시 해제 방법 (테스트용):

bash
 
sudo setenforce 0

⚠️ 단, 보안상 중요한 시스템에서는 사용에 주의가 필요합니다.


🌐 실전 예시: 웹 서버 설정 중 Permission Denied 오류

bash
 
AH00035: access to /index.html denied (filesystem path '/var/www/html') because search permissions are missing on a component of the path

이건 웹 서버의 사용자(보통 www-data)가 디렉토리에 접근할 수 없을 때 발생해요.

🔧 해결 방법:

bash
 
sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html

🎯 마무리 – Permission Denied? 이제 당황하지 마세요!

이제 chmod, chown, sudo 명령어의 차이점과 Permission denied 오류의 원인별 해결 방법을 알게 되셨죠?
리눅스는 확실히 까다롭지만, 그만큼 보안이 탄탄하다는 뜻이기도 해요!

정리하자면:

  • chmod: 실행 권한 부여
  • chown: 파일 소유자 변경
  • sudo: 관리자 권한으로 실행

앞으로 이런 오류를 만나면, 당황하지 말고 차근차근 원인을 파악하고 명령어로 해결해보세요!
리눅스 고수가 되는 그날까지

728x90
반응형

댓글