본문 바로가기

카테고리 없음

리눅스 파일 권한 관리 (chmod, chown, umask)

리눅스 서버를 운영하다 보면 "Permission denied" 오류를 한 번쯤 마주치게 됩니다. 이 오류의 원인 대부분은 파일 권한 설정에 있습니다. chmod, chown, umask 세 가지 명령어의 원리를 이해하면 오류 해결은 물론 안전한 서버 운영까지 가능해집니다.


chmod로 파일 권한 변경하는 방법

리눅스에서 파일을 다룰 때 가장 먼저 마주치는 개념이 바로 파일 권한입니다. ls -l 명령어를 실행하면 다음과 같은 형태의 출력을 볼 수 있습니다.

-rw-r--r-- 1 user user 1024 Aug 27 test.txt

가장 앞부분의 -rw-r--r--가 파일 권한을 나타냅니다. 첫 번째 문자는 파일의 종류를 의미하는데, -는 일반 파일, d는 디렉터리, l은 심볼릭 링크를 뜻합니다. 그 뒤에 이어지는 9개의 문자는 소유자, 그룹, 기타 사용자 순서로 각각의 권한을 나타냅니다. r은 읽기(Read), w는 쓰기(Write), x는 실행(Execute), -는 해당 권한 없음을 의미합니다.

이 권한을 변경하는 명령어가 바로 chmod입니다. chmod는 파일이나 디렉터리의 권한을 변경하는 명령어로, 기호 방식과 숫자 방식 두 가지로 사용할 수 있습니다.

기호 방식은 다음과 같이 실행 권한을 추가할 때 직관적으로 사용합니다.

chmod +x backup.sh

숫자 방식은 각 권한에 해당하는 값을 더해서 지정합니다. r은 4, w는 2, x는 1입니다. 따라서 읽기·쓰기·실행을 모두 허용하면 7(4+2+1), 읽기와 실행만 허용하면 5(4+1)가 됩니다. 예를 들어 chmod 755 script.sh를 실행하면 소유자는 rwx, 그룹과 기타 사용자는 r-x 권한을 갖게 됩니다.

여기서 중요한 점은 단순히 명령어 사용법을 아는 것과, 왜 그 권한을 설정해야 하는지 원리를 이해하는 것은 전혀 다른 수준의 역량이라는 사실입니다. 웹 서버 환경에서 755가 자주 사용되는 이유는 소유자만 파일을 수정할 수 있고 나머지는 읽거나 실행만 할 수 있어 기본적인 접근 분리가 가능하기 때문입니다. 그러나 모든 파일을 무조건 755로 설정하는 것은 결코 좋은 관행이 아닙니다. 각 파일의 성격과 실제 접근 요구사항에 따라 필요한 최소 권한만 부여하는 것이 올바른 접근 방식입니다. chmod는 강력한 도구이지만, 그만큼 신중하게 사용해야 합니다.


chown으로 파일 소유자 변경하는 방법

chmod가 권한 자체를 다룬다면, chown은 파일의 소유자와 그룹을 변경하는 명령어입니다. 권한 오류가 발생했을 때 많은 초보자가 chmod만 먼저 시도하는 경향이 있지만, 실제로는 소유자가 잘못 설정되어 있어 문제가 발생하는 경우도 상당히 많습니다. 이 두 명령어의 역할 차이를 명확히 이해하는 것이 실무에서 매우 중요합니다.

chown의 기본 사용법은 다음과 같습니다.

sudo chown webuser test.txt

위 명령어는 test.txt 파일의 소유자를 webuser로 변경합니다. 사용자와 그룹을 동시에 변경하려면 콜론으로 구분하여 지정합니다.

sudo chown webuser:webgroup test.txt

디렉터리와 그 하위 파일 전체를 한꺼번에 변경할 때는 -R 옵션을 사용합니다.

sudo chown -R webuser:webgroup /var/www/html

그런데 -R 옵션은 하위 파일과 디렉터리까지 모두 변경하기 때문에 사용 시 각별한 주의가 필요합니다. 잘못된 경로에서 chown -R을 실행하면 예상하지 못한 파일의 소유권까지 변경될 수 있습니다. 특히 루트 경로나 시스템 디렉터리에서 이 명령어를 잘못 실행하면 서버 전체에 심각한 문제가 생길 수도 있습니다.

chmodchown의 역할을 정리하면 다음과 같습니다. chmod는 파일 권한 변경, chown은 파일 소유자 변경, chgrp는 파일 그룹 변경, umask는 새로 생성되는 파일의 기본 권한 제한을 담당합니다. 예를 들어 다음과 같이 두 명령어를 함께 사용하는 시나리오를 생각해 볼 수 있습니다.

sudo chown user1:developers project.txt
chmod 640 project.txt

이 경우 파일의 소유자는 user1, 그룹은 developers가 되고, 권한은 소유자가 읽기·쓰기(rw-), 그룹이 읽기(r--), 기타 사용자는 접근 불가(---)가 됩니다. 이처럼 chownchmod를 함께 정확히 설정해야만 의도한 대로 접근 제어가 이루어집니다. 소유자와 그룹을 먼저 올바르게 지정한 뒤 권한을 설정하는 순서를 지키는 것이 실무에서 권장되는 방식입니다.


umask로 새 파일의 기본 권한 제한하기

chmodchown이 이미 존재하는 파일을 다루는 명령어라면, umask는 새로운 파일이나 디렉터리가 생성될 때 기본적으로 부여될 수 있는 권한에서 제한할 부분을 지정하는 값입니다. 이 개념은 처음에는 다소 낯설게 느껴질 수 있지만, 서버 환경을 안전하게 유지하기 위한 중요한 설정입니다.

현재 적용된 umask 값은 다음 명령어로 확인할 수 있습니다.

umask

일반적으로 0022와 같은 값이 출력됩니다. 좀 더 자세하게 문자 형태로 확인하려면 다음과 같이 입력합니다.

umask -S

결과가 u=rwx,g=rx,o=rx와 같이 출력되면 사용자, 그룹, 기타 사용자의 권한 제한 상태를 직관적으로 파악할 수 있습니다.

리눅스에서는 일반적으로 새 파일의 기본 권한을 666, 디렉터리는 777을 기준으로 umask를 적용합니다. umask가 022라면 일반 파일은 대체로 644, 디렉터리는 755 권한으로 생성되는 것을 자주 볼 수 있습니다.

다만 여기서 주의해야 할 점이 있습니다. umask의 동작을 단순히 666 - 022 = 644와 같은 산술 뺄셈으로만 이해하면 실제 상황에서 혼란이 생길 수 있습니다. 실제 권한은 프로그램이나 애플리케이션이 별도의 권한을 지정하는 방식에 따라 달라질 수 있기 때문에, umask는 '생성 권한을 제한하는 마스크'로 이해하는 것이 더 정확합니다. 또한 umask는 셸 설정이나 시스템 환경에 따라 적용 방식이 달라질 수 있으므로, 서버 환경을 변경하기 전에 반드시 현재 값을 먼저 확인하는 습관이 중요합니다.

권한 오류가 발생했을 때 무작정 chmod 777을 실행하는 것은 가장 피해야 할 행동입니다. 777은 소유자, 그룹, 기타 사용자 모두에게 읽기·쓰기·실행 권한을 주는 매우 넓은 권한으로, 웹 서버나 여러 사용자가 접근하는 환경에서는 심각한 보안 문제로 이어질 수 있습니다. 올바른 접근 방식은 ls -l로 소유자·그룹·권한을 먼저 확인하고, 상위 디렉터리의 접근 권한도 ls -ld로 점검한 뒤, 필요한 사용자에게 필요한 권한만 부여하는 최소 권한 원칙을 따르는 것입니다. umask 설정을 제대로 이해하면, 파일이 처음 생성될 때부터 적절한 권한으로 만들어지도록 환경 자체를 안전하게 구성할 수 있습니다.


리눅스 파일 권한 관리는 단순한 명령어 암기가 아니라 서버 보안을 지키는 기본 관리 요소입니다. chmod로 권한을 조정하고, chown으로 소유자를 바로잡고, umask로 생성 기본값을 제어하는 세 가지 흐름을 이해하면 대부분의 권한 문제를 체계적으로 해결할 수 있습니다. 편의보다 원칙을 우선하는 습관이 안전한 서버 운영의 시작입니다.


[출처]
영상 제목/채널명: GNU Coreutils 공식 문서, Linux man-pages(chmod, chown, umask)


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

© 2026 블로그 이름