글 목록으로 돌아가기
최오키 개발블로그 4분 읽기

리눅스 권한 완벽 가이드: chmod, chown, chgrp로 파일 접근 제어하기

리눅스 권한, 왜 배워야 할까?


리눅스 권한, 왜 배워야 할까?

리눅스를 사용하다 보면 ‘Permission denied’ 에러를 자주 만나게 됩니다. 파일에 접근하려는데 안 되고, 명령어를 실행하려는데 막히고… 답답한 상황이 반복되죠. 또 ls -la로 파일을 조회하면 drwxr-xr-x 같은 알 수 없는 문자열이 나타나는데, 이게 도대체 뭘 의미하는 걸까요?

리눅스는 여러 사용자가 함께 사용하는 시스템입니다. 그래서 각 파일과 디렉토리에 대해 누가 어떤 작업을 할 수 있는지를 명확히 정의해야 합니다. 이것이 바로 권한(Permission) 시스템 입니다. 이 시스템을 제대로 이해하면 파일 접근 문제를 쉽게 해결할 수 있고, 시스템 보안도 한층 강화할 수 있어요.

이 글에서는 리눅스 권한의 기초부터 실무 활용까지 차근차근 살펴보겠습니다. 복잡해 보이지만 한 번 이해하면 정말 간단하니까요!


📋 ls -la 출력 읽기: 권한의 모든 것이 여기 있다

먼저 ls -la 명령어의 출력을 자세히 살펴봅시다. 이것이 리눅스 권한을 이해하는 첫 번째 단계입니다.

이 출력을 왼쪽부터 차례대로 해석하면:

첫 번째 문자 (파일 타입) : -는 일반 파일, d는 디렉토리, l은 심볼릭 링크를 의미합니다. 이것으로 우리가 어떤 종류의 파일을 다루고 있는지 알 수 있어요.

다음 9개 문자 (권한 정보) : 이것이 핵심입니다! rwxr-xr-x를 3개씩 끊으면 rwx | r-x | r-x가 됩니다. 각각 소유자, 그룹, 기타 사용자의 권한을 나타냅니다.

파일타입(1) + 권한(9), 링크수**, 소유자, 그룹, 파일 크기, 수정 시간, 파일명** : 나머지 정보들은 파일의 메타데이터를 보여줍니다.

리눅스 권한 구조를 시각화한 이미지


🔑 권한의 3단계 구조: Owner, Group, Others

리눅스는 모든 파일과 디렉토리에 대해 3단계 권한 체계 를 사용합니다. 이것이 리눅스 권한의 핵심이에요.

1. Owner (소유자) : 파일을 만든 사용자입니다. 보통 파일을 생성한 사람이 소유자가 되죠. 소유자는 자신의 파일에 대해 가장 강력한 권한을 가집니다.

2. Group (그룹) : 파일이 속한 그룹입니다. 한 명의 사용자가 여러 그룹에 속할 수 있고, 같은 그룹에 속한 사용자들은 그룹 권한을 공유합니다.

3. Others (기타) : 파일의 소유자도 아니고, 파일의 그룹에도 속하지 않은 모든 사용자들입니다. 보통 가장 제한적인 권한을 가집니다.

여기서 중요한 점은 권한 확인이 순서대로 진행된다 는 것입니다. 시스템이 파일에 접근하려는 사용자를 확인할 때, 먼저 “이 사람이 소유자인가?”를 확인하고, 그렇다면 소유자 권한을 적용하고 끝입니다. 만약 소유자가 아니라면 “이 사람이 파일의 그룹에 속하는가?”를 확인하고, 그렇다면 그룹 권한을 적용합니다. 둘 다 아니라면 기타 사용자 권한을 적용하는 거죠.


📖 r, w, x: 세 가지 권한의 의미

권한 문자열에서 나타나는 r, w, x는 각각 다른 의미를 가집니다.

r (read, 읽기) : 파일의 내용을 읽을 수 있다는 뜻입니다. 디렉토리의 경우, 그 안의 파일 목록을 볼 수 있다는 의미입니다.

w (write, 쓰기) : 파일의 내용을 수정하거나 삭제할 수 있다는 뜻입니다. 디렉토리의 경우, 그 안에 새로운 파일을 생성하거나 기존 파일을 삭제할 수 있다는 의미입니다.

x (execute, 실행) : 파일을 실행할 수 있다는 뜻입니다. 디렉토리의 경우, 그 디렉토리로 들어갈 수 있다는 의미입니다. 디렉토리에 x 권한이 없으면 아무리 r 권한이 있어도 그 안의 파일을 접근할 수 없어요.

예를 들어, rw-r--r--라는 권한은 다음을 의미합니다:

- 소유자: rw- → 읽기, 쓰기 가능 (실행 불가) - 그룹: r-- → 읽기만 가능 - 기타: r-- → 읽기만 가능


🔢 숫자로 표현하는 권한: 755, 644의 의미

권한을 문자로 표현하는 것도 있지만, 숫자로도 표현할 수 있습니다. 이 방식이 더 간결하고 자주 사용돼요.

각 권한을 숫자로 변환하는 규칙은 다음과 같습니다:

- r (read) = 4 - w (write) = 2 - x (execute) = 1

세 권한을 더해서 한 자리 숫자를 만들고, 이를 소유자, 그룹, 기타 순서로 나열합니다. 예를 들어:

`rwx` = 4+2+1 = 7
`rw-` = 4+2+0 = 6
`r-x` = 4+0+1 = 5
`r--` = 4+0+0 = 4
`-wx` = 0+2+1 = 3
`-w-` = 0+2+0 = 2
`--x` = 0+0+1 = 1
`---` = 0+0+0 = 0

따라서 rwxr-xr-x755가 되고, rw-r--r--644가 됩니다. 이 두 권한 조합이 가장 자주 사용되는데, 755는 보통 디렉토리나 실행 파일에, 644는 일반 텍스트 파일에 많이 적용됩니다.


⚙️ chmod: 권한 변경하기

chmod 명령어는 파일이나 디렉토리의 권한을 변경할 때 사용합니다. 숫자 방식과 문자 방식 두 가지가 있어요.

숫자 방식으로 권한 변경하기 :

문자 방식으로 권한 변경하기 :

문자 방식이 더 직관적이라고 생각할 수도 있지만, 숫자 방식이 더 빠르고 명확해서 실무에서는 숫자 방식을 더 많이 사용합니다.


👤 chown: 소유자 변경하기

chown 명령어는 파일의 소유자나 그룹을 변경할 때 사용합니다. 보통 관리자 권한이 필요해요.

소유자를 변경할 때는 반드시 sudo를 사용해야 합니다. 보안상의 이유로 일반 사용자가 파일의 소유자를 마음대로 변경하는 것을 막기 위함이죠.


👥 chgrp: 그룹 변경하기

chgrp 명령어는 파일이나 디렉토리가 속한 그룹을 변경할 때 사용합니다.


👨‍💼 사용자와 그룹의 관계 이해하기

한 명의 사용자가 여러 그룹에 속할 수 있다는 것을 아는 것이 중요합니다. 이를 확인하는 명령어들을 살펴봅시다.

출력을 보면 gid=1000(myuser)Primary Group 을 의미합니다. 이것은 파일을 생성할 때 기본으로 지정되는 그룹이에요. 그 뒤의 groups=...Secondary Groups 로, 추가로 속한 그룹들입니다.

사용자를 그룹에 추가할 때는 usermod -aG 명령어를 사용합니다:

주의할 점 : 그룹을 추가한 후에는 반드시 재로그인해야 변경사항이 적용됩니다. 같은 터미널에서 바로 확인해도 아직 적용되지 않아요.


⚠️ 실무에서 자주 하는 실수들

권한을 다룰 때 주의해야 할 몇 가지 실수들이 있습니다.

1. 재귀 chmod의 위험성

chmod -R 777은 정말 위험합니다. 모든 파일에 모든 권한을 부여하는 것이기 때문에 보안 문제가 생길 수 있어요. 디렉토리는 755, 일반 파일은 644로 설정하는 것이 안전합니다.

2. 그룹 추가 후 재로그인 안 함

3. Owner 권한이 Group보다 우선한다는 것을 잊음

예를 들어, -rwx---rwx 권한의 파일이 있다고 합시다. 소유자 alice가 developers 그룹에 속한다면, alice는 Owner 권한인 rwx가 적용됩니다. Group 권한인 ---은 무시되죠. 이것 때문에 의도와 다르게 동작할 수 있으니 주의해야 합니다.


🎯 실전 예시: 웹 서버 설정

실제로 웹 서버를 운영할 때 권한을 어떻게 설정하는지 살펴봅시다.

이렇게 설정하면 웹 서버는 파일을 읽을 수 있고, 필요한 디렉토리에만 쓰기 권한을 가지게 됩니다. 보안과 기능성의 균형을 맞추는 것이 중요해요.


📝 정리: 리눅스 권한의 핵심

이제 리눅스 권한 시스템의 기본을 이해했습니다. 마지막으로 핵심을 정리하면:

✅ 리눅스는 Owner-Group-Others 3단계 권한 체계를 사용합니다.

✅ 권한은 r(4), w(2), x(1)의 조합으로 표현되며, 숫자로도 표현할 수 있습니다.

✅ 권한 확인은 Owner → Group → Others 순서로 진행되며, 한 번 매칭되면 끝입니다.

chmod로 권한, chown으로 소유자, chgrp로 그룹을 변경합니다.

✅ 그룹을 추가한 후에는 반드시 재로그인해야 적용됩니다.

✅ 재귀 권한 변경은 신중하게, 디렉토리와 파일을 구분해서 처리합니다.

처음에는 복잡해 보이지만, 몇 번 실습하다 보면 자연스럽게 익숙해집니다. 이제 Permission denied 에러가 나면 당황하지 말고 차근차근 권한을 확인하고 조정하면 되는 거예요. 리눅스 권한 시스템을 완벽히 이해하면, 시스템 관리가 훨씬 수월해질 거라고 확신합니다!


#Linux #권한 #chmod #chown #파일권한 #리눅스 #시스템관리

원문 보기

Related posts

Other Git push 시 발생하는 non-fast-forward 오류 해결 방법 Other HTTP 504 Gateway Timeout 오류의 원인과 해결 방법 ElasticSearch Elasticsearch Unassigned Shards 문제 해결 가이드