본문 바로가기

카테고리 없음

리눅스 파일 권한 완벽 이해: chmod·chown 소유자 설정 실무 가이드

 

리눅스 서버를 관리하다 보면 Permission denied라는 오류를 한 번쯤 만나게 됩니다. 웹서버 파일을 수정하려는데 저장되지 않거나, 프로그램을 실행하려는데 권한이 없다는 메시지가 나타나는 경우도 있습니다.

이런 문제를 해결하려면 리눅스의 파일 권한과 소유자 개념을 이해해야 합니다.

리눅스에서는 파일과 디렉터리마다 누가 읽고, 쓰고, 실행할 수 있는지를 결정하는 권한이 설정되어 있습니다. 대표적으로 사용하는 명령어가 chmodchown입니다.

이번 글에서는 리눅스 파일 권한의 기본 개념부터 chmod, chown, 소유자와 그룹 설정, 숫자로 권한을 지정하는 방법까지 실무에서 자주 사용하는 내용을 쉽게 알아보겠습니다.


1. 리눅스 파일 권한이란?

리눅스에서는 모든 파일과 디렉터리에 권한 정보가 설정되어 있습니다.

파일 권한은 크게 세 가지로 나눌 수 있습니다.

  • r : 읽기(Read)
  • w : 쓰기(Write)
  • x : 실행(Execute)

그리고 권한의 대상은 다음 세 그룹으로 구분합니다.

  • User(u) : 파일 소유자
  • Group(g) : 파일이 속한 그룹
  • Other(o) : 그 외 사용자

예를 들어 다음 명령어로 파일의 권한을 확인할 수 있습니다.

ls -l test.txt

결과가 다음과 같이 나온다고 가정해 보겠습니다.

-rw-r--r-- 1 user user 1024 Aug 19 10:00 test.txt

맨 앞의

-rw-r--r--

부분이 파일의 종류와 권한을 나타냅니다.


2. ls -l 권한 표시 이해하기

다음과 같은 권한이 있다고 가정해 보겠습니다.

-rwxr-xr--

이것을 세 그룹으로 나누면 다음과 같습니다.

rwx | r-x | r--
User  Group Other

각각의 의미는 다음과 같습니다.

권한의미

r 읽기
w 쓰기
x 실행
- 해당 권한 없음

따라서 rwx는 읽기, 쓰기, 실행 권한을 모두 가지고 있다는 뜻입니다.

r-x는 읽기와 실행은 가능하지만 쓰기는 할 수 없습니다.

r--는 읽기만 가능합니다.


3. chmod란 무엇인가?

chmod는 change mode의 약자로, 파일이나 디렉터리의 권한을 변경할 때 사용하는 명령어입니다.

기본적인 사용법은 다음과 같습니다.

chmod 권한 파일명

예를 들어 파일 소유자에게 읽기, 쓰기, 실행 권한을 주려면 다음과 같이 사용할 수 있습니다.

chmod u+rwx test.sh

그룹에는 읽기와 실행 권한을 추가하려면 다음과 같이 입력합니다.

chmod g+rx test.sh

다른 사용자에게 실행 권한을 제거하려면 다음과 같습니다.

chmod o-x test.sh

4. chmod 숫자 방식 이해하기

리눅스에서는 숫자를 이용해 권한을 지정하는 방법도 많이 사용합니다.

각 권한에는 숫자가 지정되어 있습니다.

권한숫자

읽기(r) 4
쓰기(w) 2
실행(x) 1
권한 없음(-) 0

여러 권한을 더해서 사용할 수 있습니다.

예를 들어 읽기와 쓰기 권한은 다음과 같습니다.

4 + 2 = 6

읽기와 실행 권한은 다음과 같습니다.

4 + 1 = 5

읽기, 쓰기, 실행 권한을 모두 가지면 다음과 같습니다.

4 + 2 + 1 = 7

따라서 다음 명령어를 실행하면,

chmod 755 script.sh

권한은 다음과 같이 설정됩니다.

User  : rwx = 7
Group : r-x = 5
Other : r-x = 5

즉, 소유자는 모든 권한을 가지고 그룹과 다른 사용자는 읽기와 실행만 할 수 있습니다.


5. chmod 644는 어떤 의미일까?

웹서버 파일이나 일반 텍스트 파일에서 자주 볼 수 있는 권한이 644입니다.

chmod 644 index.html

권한을 나누면 다음과 같습니다.

6 = rw-
4 = r--
4 = r--

따라서 파일 소유자는 읽기와 쓰기가 가능하고, 그룹과 다른 사용자는 읽기만 가능합니다.

일반적인 파일 권한을 설정할 때 자주 사용되는 형태지만, 모든 파일에 무조건 644를 적용하는 것은 적절하지 않습니다.

파일의 용도와 실행 여부에 따라 적절한 권한을 선택해야 합니다.


6. chmod 755는 언제 사용하는가?

실행해야 하는 스크립트나 프로그램 파일에서는 755가 사용되는 경우가 있습니다.

chmod 755 backup.sh

그러면 소유자는 읽기, 쓰기, 실행이 가능하고 그룹과 다른 사용자는 읽기와 실행이 가능합니다.

다만 서버 환경에서는 프로그램의 특성과 보안 정책에 따라 필요한 최소 권한만 부여하는 것이 중요합니다.


7. chown이란 무엇인가?

chown은 change owner의 약자로 파일이나 디렉터리의 소유자와 그룹을 변경할 때 사용합니다.

기본적인 형식은 다음과 같습니다.

chown 사용자 파일명

예를 들어 user1을 파일의 소유자로 변경하려면 다음과 같이 사용할 수 있습니다.

sudo chown user1 test.txt

소유자와 그룹을 동시에 변경하려면 다음과 같이 입력합니다.

sudo chown user1:developers test.txt

이 명령은 test.txt의 소유자를 user1, 그룹을 developers로 변경합니다.


8. 디렉터리와 하위 파일의 소유자를 한 번에 변경하기

웹사이트 디렉터리처럼 여러 파일이 들어 있는 경우에는 -R 옵션을 사용할 수 있습니다.

sudo chown -R user1:developers /var/www/example

-R은 하위 디렉터리와 파일까지 재귀적으로 적용한다는 의미입니다.

하지만 이 명령어는 매우 주의해서 사용해야 합니다.

실수로 /var, /etc와 같은 중요한 시스템 디렉터리의 소유자를 변경하면 서비스가 정상적으로 작동하지 않을 수 있습니다.

따라서 chown -R은 대상 경로를 정확하게 확인한 후 사용하는 것이 중요합니다.


9. 파일 소유자와 권한을 함께 확인하는 방법

파일의 권한과 소유자를 확인할 때는 다음 명령어가 유용합니다.

ls -l

특정 파일만 확인하려면 다음과 같이 입력합니다.

ls -l test.txt

더 자세한 파일 정보를 확인하려면 다음 명령어도 사용할 수 있습니다.

stat test.txt

stat 명령어를 사용하면 파일의 소유자, 그룹, 권한, 크기, 시간 정보 등을 자세하게 확인할 수 있습니다.


10. 리눅스 디렉터리 권한은 파일과 조금 다르다

리눅스에서 디렉터리의 r, w, x 권한은 파일과 조금 다른 의미를 가집니다.

디렉터리에서는 다음과 같이 이해하면 쉽습니다.

  • r : 디렉터리 안의 목록을 확인할 수 있음
  • w : 파일 생성 및 삭제 등에 필요한 권한
  • x : 디렉터리에 접근할 수 있는 권한

특히 디렉터리에 x 권한이 없으면 해당 디렉터리 안의 파일에 접근하는 데 문제가 발생할 수 있습니다.

따라서 웹서버 디렉터리나 애플리케이션 디렉터리의 권한을 변경할 때는 파일과 디렉터리의 차이를 함께 고려해야 합니다.


11. Permission denied 오류가 발생하면 무엇을 확인할까?

리눅스에서 다음과 같은 오류가 발생했다고 가정해 보겠습니다.

Permission denied

이때 무조건 chmod 777을 사용하는 것은 좋은 해결 방법이 아닙니다.

먼저 파일의 권한과 소유자를 확인해야 합니다.

ls -l 파일명

그리고 현재 로그인한 사용자를 확인합니다.

whoami

파일의 소유자와 그룹을 자세하게 확인하려면 다음 명령어를 사용할 수 있습니다.

stat 파일명

필요하다면 해당 파일의 소유자를 올바른 사용자 또는 그룹으로 변경하고 최소한의 권한만 부여하는 방식으로 해결하는 것이 안전합니다.


12. chmod 777을 무조건 사용하면 안 되는 이유

리눅스 권한 문제가 발생했을 때 인터넷에서 흔히 볼 수 있는 해결 방법 중 하나가 다음 명령어입니다.

chmod 777 파일명

하지만 777은 소유자, 그룹, 다른 사용자 모두에게 읽기·쓰기·실행 권한을 부여합니다.

따라서 서버 환경에서 무조건 777을 사용하는 것은 보안상 위험할 수 있습니다.

권한 문제를 해결할 때는 문제를 해결할 수 있는 최소 권한만 부여하는 원칙을 적용하는 것이 좋습니다.

예를 들어 단순히 파일을 읽어야 하는 프로그램이라면 불필요한 쓰기 권한까지 제공할 필요가 없습니다.


13. 실무에서 자주 사용하는 권한 확인 명령어

리눅스 서버를 관리할 때 다음 명령어를 알아두면 편리합니다.

파일 권한 확인

ls -l

자세한 파일 정보 확인

stat 파일명

현재 사용자 확인

whoami

파일 소유자 변경

sudo chown 사용자:그룹 파일명

파일 권한 변경

chmod 644 파일명

실행 파일 권한 변경

chmod 755 파일명

디렉터리와 하위 항목의 소유자 변경

sudo chown -R 사용자:그룹 디렉터리

단, 마지막 명령어는 시스템 디렉터리에 잘못 적용하지 않도록 특히 주의해야 합니다.


14. chmod와 chown의 차이

두 명령어를 처음 접하면 서로 비슷해 보일 수 있지만 역할은 다릅니다.

명령어주요 역할

chmod 파일과 디렉터리의 권한 변경
chown 파일과 디렉터리의 소유자 변경
chgrp 파일과 디렉터리의 그룹 변경
ls -l 권한과 소유자 확인
stat 파일의 상세 정보 확인

간단하게 기억하면 됩니다.

chmod = 누가 무엇을 할 수 있는지 변경

chown = 누가 소유하고 있는지 변경


15. 리눅스 파일 권한 관리 실무 원칙

서버를 안전하게 운영하려면 단순히 오류를 없애는 것보다 권한을 적절하게 관리하는 것이 중요합니다.

첫 번째, 필요한 권한만 부여하기

모든 사용자에게 쓰기 권한을 줄 필요는 없습니다.

두 번째, 파일 소유자를 먼저 확인하기

권한 문제가 발생하면 ls -l로 소유자와 그룹을 먼저 확인합니다.

세 번째, chmod 777 사용을 최소화하기

문제를 빠르게 해결하는 것처럼 보여도 서버 보안을 약화시킬 수 있습니다.

네 번째, chown -R 사용에 주의하기

하위 파일까지 한꺼번에 변경되므로 경로를 반드시 확인해야 합니다.

다섯 번째, 변경 후 다시 확인하기

권한을 변경한 다음에는 다음 명령어로 결과를 확인하는 습관이 좋습니다.

ls -l 파일명

마무리

리눅스 파일 권한은 처음에는 복잡해 보이지만 읽기(r), 쓰기(w), 실행(x) 세 가지 기본 개념과 소유자(User), 그룹(Group), 기타 사용자(Other) 구조를 이해하면 어렵지 않습니다.

chmod는 파일의 권한을 변경하고, chown은 파일의 소유자와 그룹을 변경하는 명령어입니다.

특히 서버에서 Permission denied 오류가 발생했을 때는 무조건 chmod 777을 적용하기보다 현재 권한과 소유자를 먼저 확인하고 필요한 최소 권한을 설정하는 것이 중요합니다.

리눅스 서버의 보안과 안정성을 높이기 위해서는 파일 권한을 적절하게 관리하고 변경 내용을 확인하는 습관을 갖는 것이 좋습니다.

핵심 명령어 한눈에 보기

# 파일 권한 확인
ls -l

# 파일 상세 정보 확인
stat test.txt

# 현재 사용자 확인
whoami

# 파일 권한 변경
chmod 644 test.txt

# 실행 파일 권한 변경
chmod 755 script.sh

# 소유자와 그룹 변경
sudo chown user1:developers test.txt

리눅스 권한 문제를 해결할 때 가장 중요한 것은 무조건 권한을 크게 주는 것이 아니라 필요한 사용자에게 필요한 권한만 부여하는 것입니다.

 


소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 블로그 이름