Linux에서 chmod 644와 -rw-r–r– 이해하기: 파일 권한을 명확히 설명

目次

1. 소개

Linux에서 “접근 권한”이란 무엇인가?

Linux와 유닉스 계열 시스템에서 파일과 디렉토리의 접근 권한을 적절히 관리하는 것은 매우 중요합니다. 이는 보안 관점뿐만 아니라 안정적인 시스템 운영을 유지하기 위해서도 필수적입니다.

많은 사람들이 터미널에서 파일 목록을 볼 때 -rw-r--r-- 같은 기호가 무엇을 의미하는지 궁금해했을 것입니다.

chmod와 -rw-r–r–의 관계

이 기호들은 파일 접근 권한을 기호 표기법으로 나타낸 것입니다. chmod 명령어는 이러한 권한을 설정하고 수정하는 데 사용됩니다. 즉, chmod를 사용하여 파일에 특정 권한을 부여하면 -rw-r--r-- 같은 기호로 결과가 표시됩니다.

이 기사의 목적과 대상 독자

이 기사는 -rw-r--r--가 실제로 무엇을 의미하는지와 chmod를 사용하여 이를 설정하거나 변경하는 방법을 초보자가 쉽게 이해할 수 있도록 설명합니다. 또한 보안 고려사항과 실생활에서의 실용적인 사용 예시를 다룹니다.

이 내용은 Linux 초보자부터 터미널 작업에 익숙해지는 중급 사용자까지를 대상으로 하며, 실제 작업 환경에서 사용할 수 있는 실용적인 지식을 제공하는 것을 목표로 합니다.

2. chmod란 무엇인가? (기본 이해)

chmod 명령어의 역할

chmod (발음: “change mode”)는 Linux와 유닉스 계열 운영 체제에서 파일과 디렉토리의 접근 권한을 수정하는 데 사용되는 명령어입니다.
이 명령어를 사용하면 읽기, 쓰기, 실행과 같은 작업을 누가 수행할 수 있는지 유연하게 제어할 수 있습니다.

적절한 권한 설정은 보안뿐만 아니라 파일 공유 및 실행 문제 방지를 위해서도 중요합니다.

chmod의 기본 구문

chmod [options] [permissions] filename

예를 들어:

chmod 644 sample.txt

이 명령어는 sample.txt의 권한을 다음과 같이 변경합니다:

-rw-r--r--  1 user group 1234 Apr 13 20:00 sample.txt
  • 소유자 (사용자): 읽기와 쓰기 허용 (rw-)
  • 그룹: 읽기 전용 (r–)
  • 기타: 읽기 전용 (r–)

권한 지정의 두 가지 방법

chmod로 권한을 지정하는 방법은 두 가지가 있습니다:

  • 숫자 모드
  • 예: chmod 755 script.sh
  • 이 방법은 숫자를 사용하여 권한을 부여합니다.
  • 기호 모드
  • 예: chmod u=rw,g=r,o=r file.txt
  • 이 방법은 u (사용자), g (그룹), o (기타), r/w/x 등의 기호를 사용합니다.

두 방법 모두 동일한 결과를 생성합니다. 숫자 모드는 대량 변경에 빠르고, 기호 모드는 더 유연한 제어를 허용합니다.

chmod와 chown의 차이

자주 혼동되는 명령어는 chown입니다:

  • chmod : 접근 권한 변경
  • chown : 파일 소유자와 그룹 변경

목적이 다르기 때문에 각 명령어의 역할을 명확히 이해하는 것이 중요합니다.

3. -rw-r–r–의 의미 이해

권한 기호의 구조

Linux에서 ls -l을 실행하면 파일 정보가 다음과 같은 형식으로 표시됩니다:

-rw-r--r--  1 user group  1234 Apr 13  2025 sample.txt

가장 왼쪽 부분인 -rw-r--r--은 파일의 접근 권한을 나타냅니다. 이를 이해하면 파일에 대해 누가 무엇을 할 수 있는지 정확히 알 수 있습니다.

각 부분의 상세 분해

① 첫 번째 문자: 파일 유형

SymbolMeaning
-Regular file
dDirectory
lSymbolic link
bBlock device
cCharacter device

-rw-r--r--의 경우, 선두의 -은 일반 파일을 나타냅니다.

② 2~10번째 문자: 권한 (3자 × 3세트)

  • 소유자 (사용자) : rw- 읽기와 쓰기 허용; 실행은 불가.
  • 그룹 : r-- 읽기 전용.
  • 기타 : r-- 읽기 전용.

이는 소유자만 파일을 편집할 수 있고, 나머지 모두는 보기만 할 수 있음을 의미합니다.

숫자 표현: 644가 의미하는 것

Linux 권한은 숫자 (8진수) 표기법으로도 표현할 수 있습니다.

-rw-r--r--의 숫자 등가물은 644입니다.

User TypeSymbolicNumberMeaning
Ownerrw-6Read + Write
Groupr--4Read only
Othersr--4Read only

숫자 값은 다음과 같이 계산됩니다:

  • 읽기 (r) = 4
  • 쓰기 (w) = 2
  • 실행 (x) = 1

따라서, rw- = 4 + 2 = 6, 그리고 각 r-- = 4, 결과적으로 644.

이 권한이 일반적으로 사용되는 이유

-rw-r--r-- (644)는 HTML 및 CSS와 같은 공개 파일과 정적 웹 서버 콘텐츠에 매우 일반적인 권한입니다.

  • 파일 소유자만 파일을 수정할 수 있어 의도하지 않은 변경을 방지합니다
  • 다른 사용자는 파일을 읽을 수 있어 공유와 공개 액세스를 허용합니다

올바르게 사용하면 이 설정은 보안과 사용성의 균형을 이룹니다.

4. chmod를 사용하여 -rw-r–r– 설정하기 (실전 가이드)

chmod 명령어로 권한 변경하기

파일 및 디렉토리 액세스 권한은 chmod 명령어를 사용하여 자유롭게 변경할 수 있습니다. 예를 들어, 권한을 -rw-r--r--로 설정하려면 단순히 권한 644를 적용하면 됩니다.

숫자 모드로 권한 설정하기

chmod 644 filename 형식을 사용합니다.

chmod 644 document.txt

이 명령어는 document.txt의 권한을 다음과 같이 변경합니다:

-rw-r--r--  1 user group 1234 Apr 13 20:00 document.txt
  • 소유자 (사용자): 읽기 및 쓰기 허용 (rw-)
  • 그룹: 읽기 전용 (r–)
  • 기타: 읽기 전용 (r–)

기호 모드로 권한 설정하기

더 유연한 제어가 필요하다면 기호 모드가 유용합니다.

chmod u=rw,g=r,o=r document.txt

이 명령어는 다음을 의미합니다:

  • u=rw : 소유자에게 읽기 및 쓰기 권한 부여
  • g=r : 그룹에게 읽기 전용 권한 부여
  • o=r : 기타에게 읽기 전용 권한 부여

결과는 숫자 모드 644를 사용하는 것과 정확히 같습니다.

디렉토리에 권한 적용 시 중요한 주의사항

파일과 달리, 디렉토리는 접근하기 위해 실행 권한 (x)이 필요합니다.

예를 들어, 다음 설정은 액세스를 제한할 수 있습니다:

chmod 644 my_folder

이 구성에서는 읽기 권한이 부여되지만, 실행 권한이 없어 사용자가 디렉토리에 들어갈 수 없습니다.

올바른 예:

chmod 755 my_folder
  • 소유자: 읽기, 쓰기, 실행
  • 그룹 및 기타: 읽기 및 실행

이렇게 하면 다른 사용자가 디렉토리 내부의 파일을 나열하고 액세스할 수 있습니다.

재귀적으로 권한 변경하기: -R 옵션

많은 파일과 하위 디렉토리의 권한을 한 번에 변경하려면 -R (재귀) 옵션을 사용합니다.

chmod -R 644 my_folder

이것은 my_folder 아래의 모든 파일에 644 권한을 적용합니다. 그러나 이 접근 방식에는 중요한 주의사항이 있습니다.

5. ls -l 명령어로 권한 확인하기

파일 권한 보기 방법

Linux에서 파일 및 디렉토리 권한을 확인하려면 표준 ls -l 명령어를 사용합니다. 이는 권한, 소유자, 파일 크기, 마지막 수정 날짜 등의 상세 정보를 표시합니다.

기본 사용법

ls -l

출력은 다음과 같습니다:

-rw-r--r--  1 naoya devs  2048 Apr 13 20:00 index.html

각 열은 다음 의미를 가집니다:

FieldDescription
-rw-r--r--Permissions
1Number of hard links
naoyaOwner (user)
devsGroup
2048File size (bytes)
Apr 13 20:00Last modified date
index.htmlFile name

권한 필드 읽는 방법

-rw-r--r-- 부분에 주목하세요. 다음과 같이 분해할 수 있습니다:

  • 첫 번째 문자: 파일 유형
  • - : 일반 파일
  • d : 디렉토리
  • l : 심볼릭 링크
  • 나머지 아홉 문자: 권한 (3 × 3 세트)
  • 소유자: rw- → 읽기 및 쓰기
  • 그룹: r-- → 읽기 전용
  • 기타: r-- → 읽기 전용

이것은 소유자만 파일을 편집할 수 있고, 다른 사람들은 읽기만 할 수 있음을 알려줍니다.

특정 파일 확인하기

특정 파일의 권한을 확인하려면 파일 이름을 지정합니다:

ls -l index.html

많은 파일이 포함된 디렉토리에서 작업할 때 유용합니다.

디렉토리 권한 확인하기

디렉토리도 ls -l을 사용하여 확인할 수 있습니다. 내용물이 아닌 디렉토리 자체를 보려면 -d 옵션을 사용합니다.

ls -ld my_folder

이것은 my_folder의 권한 정보만 표시합니다.

안전한 권한 관리

chmod로 권한을 수정한 후, ls -l을 사용하여 결과를 항상 확인하는 것이 좋습니다.

잘못된 설정은 보안 문제나 예상치 못한 동작으로 이어질 수 있습니다.

You can also combine it with pipes for filtering:

ls -l | grep '.sh'

이것은 쉘 스크립트 파일만 필터링하여 표시합니다.

6. GUI 도구를 사용한 권한 확인 및 변경 (초보자 친화적)

명령줄에 익숙하지 않은 사용자들을 위한 옵션

Linux는 종종 터미널과 명령줄을 통해 운영되지만, 많은 초보자들이 텍스트 기반 인터페이스가 어렵거나 오류가 발생하기 쉽다고 느낍니다.
이러한 사용자들을 위해 파일 권한은 GUI (그래픽 사용자 인터페이스) 도구를 사용하여 확인하고 수정할 수도 있습니다.

Ubuntu 파일 관리자 (Nautilus) 사용

Ubuntu와 같은 Linux 배포판에는 Windows 탐색기와 유사한 기본 파일 관리자 Nautilus가 포함되어 있습니다.

권한 확인 방법:

  1. 대상 파일이나 디렉토리를 마우스 오른쪽 버튼으로 클릭
  2. “속성” 선택
  3. “권한” 탭 열기 (버전에 따라 레이블이 다를 수 있음)

그곳에서 할 수 있는 일:

  • 소유자와 그룹 보기 및 변경 (관리자 권한 필요)
  • 읽기, 쓰기, 실행 권한 토글
  • 변경 사항이 즉시 적용됨

rw-r--와 같은 기호 표기 대신 “읽기 전용”이나 “읽기 및 쓰기”와 같은 일반적인 언어 설명으로 권한이 표시되어 초보자들이 이해하기 쉽습니다.

WinSCP (Windows 사용자용 SFTP 클라이언트)

Windows에서 원격 Linux 서버에 연결할 때 WinSCP를 사용하면 GUI를 통해 권한 관리가 가능합니다.

단계:

  1. WinSCP를 사용하여 서버에 로그인
  2. 파일을 마우스 오른쪽 버튼으로 클릭하고 “속성” 선택
  3. 권한 값 변경 (예: 644) 또는 체크박스 사용
  4. “확인” 클릭하여 변경 적용

장점:

  • 숫자 형식과 기호 형식으로 모두 권한 보기 가능
  • GUI를 통해 재귀적 권한 변경 지원

주의사항:

  • 루트 권한이 필요한 파일은 sudo 권한 없이 수정할 수 없을 수 있음
WinSCP - Free SFTP and FTP client

WinSCP is a popular free file manager for Windows supporting…

FileZilla (크로스 플랫폼 SFTP 클라이언트)

macOS와 Linux에서 사용할 수 있는 크로스 플랫폼 SFTP 클라이언트 FileZilla도 권한 변경을 허용합니다.

단계:

  1. 서버에 연결
  2. 대상 파일을 마우스 오른쪽 버튼으로 클릭
  3. “파일 권한” 선택
  4. 체크박스나 숫자 값으로 권한 조정 후 “확인” 클릭

GUI 기반 작업의 장점과 주의점

장점:

  • 초보자들이 실수하기 어려움
  • 변경 사항을 즉시 시각적으로 확인 가능
  • 명령 구문 외우기 불필요

주의점:

  • 일부 서버 환경에서는 GUI 도구를 통한 권한 변경을 허용하지 않음
  • 표시된 값이 실제 적용된 권한을 항상 반영하지 않을 수 있으므로 ls -l로 확인 권장

FileZilla - The free FTP solution for both client and server…

7. chmod의 중요한 주의사항 및 문제 해결

여전히 작동하지 않음—왜 그런가?

chmod를 사용하여 권한을 변경한 후에도 파일이 예상대로 작동하지 않을 수 있습니다. 대부분의 경우 이는 잘못된 권한 설정이나 오해 때문입니다.
아래는 일반적인 실제 문제와 그 해결책입니다.

“Permission denied” 오류

증상:

bash: ./script.sh: Permission denied

원인:

  • 파일에 실행 권한 (x)이 없음

해결책:

chmod +x script.sh

또는 숫자 모드 사용:

chmod 755 script.sh

읽기나 쓰기 권한이 있더라도 실행 권한을 의미하지 않음을 유의하세요.

실행 권한이 없는 디렉토리에 접근할 수 없음

디렉토리에 chmod 644를 적용하면 내용에 접근할 수 없게 될 수 있습니다.

이유:

  • 디렉토리의 실행 권한 (x)은 내부에 들어가고 내용을 나열하는 데 필요합니다.

예시:

chmod 644 my_folder
ls my_folder

이로 인해 오류가 발생할 수 있습니다.

수정:

chmod 755 my_folder

재귀적 변경 (-R)의 함정

chmod -R은 편리하지만 파일과 디렉토리에 동일한 권한을 적용하여 예상치 못한 문제를 일으킬 수 있습니다.

일반적인 실수:

chmod -R 644 /var/www/html

이것은 디렉토리에서 실행 권한을 제거하여 접근할 수 없게 만듭니다.

올바른 접근법:

# Apply execute permissions to directories
find /var/www/html -type d -exec chmod 755 {} \;

# Apply file permissions
find /var/www/html -type f -exec chmod 644 {} \;

소유자와 그룹 불일치

권한만으로는 충분하지 않으며, 파일 소유자와 그룹 설정도 중요합니다.
예를 들어, apache와 같은 웹 서버 사용자가 파일을 읽어야 하지만, 소유자가 일반 사용자이고 다른 사용자에게 읽기 권한이 없으면 파일이 올바르게 제공되지 않습니다.

해결 방법:

  • 소유자 변경: sudo chown www-data:www-data index.html
  • 그룹 접근 권한 부여: chmod 640 index.html (그룹이 적절한 경우)

chmod 777이 위험한 이유

일부 사용자는 문제를 해결하기 위해 권한을 777로 설정하지만, 이는 매우 위험합니다.

이유:

  • 누구나 파일을 읽고, 쓰고, 실행할 수 있습니다.
  • 조작이나 악성 스크립트 실행 위험이 높습니다.

권장되는 모범 사례:

  • 파일 : 644 또는 600
  • 디렉터리 : 755 또는 700
  • 스크립트/바이너리 : 필요에 따라 755

8. 실용적인 사용 사례 및 일반 시나리오

실제 환경에서 chmod 권한은 어떻게 사용되나요?

chmod 명령과 -rw-r--r--와 같은 권한은 실제 서버 운영 및 개발 환경에서 자주 사용됩니다.
아래는 권한이 실제로 적용되는 몇 가지 대표적인 시나리오입니다.

1. 웹 서버에서 HTML 파일 관리

시나리오:
Apache나 Nginx와 같은 웹 서버에 HTML 파일을 배포할 때 일반적인 권한은 -rw-r--r-- (644)입니다.

chmod 644 index.html

왜 644인가?

  • 소유자(사이트 관리자)는 쓰기 권한이 필요합니다.
  • 웹 서버 사용자(예: www-data)는 읽기 권한만 필요합니다.
  • 다른 사용자에게 쓰기 권한을 부여할 필요가 없으며 안전하지도 않습니다.

이 구성은 최소 권한 원칙을 사용한 웹 콘텐츠의 안전한 배포를 가능하게 합니다.

2. 스크립트 파일에 실행 권한 부여

시나리오:
backup.sh 쉘 스크립트를 만들었지만, 실행 시 “Permission denied”(권한 거부) 오류가 발생합니다.

chmod 755 backup.sh

이 설정의 의미:

  • 소유자: 읽기, 쓰기, 실행 (rwx)
  • 그룹 및 기타 사용자: 읽기와 실행 (rx)

이렇게 하면 다른 사용자는 스크립트를 실행할 수 있지만, 편집은 소유자에게만 제한됩니다.

3. 민감한 파일 접근 제한

시나리오:
API 키나 비밀번호가 들어 있는 secrets.txt 파일을 관리하고 있으며, 다른 사람이 접근하지 못하도록 하고 싶습니다.

chmod 600 secrets.txt

의미:

  • 소유자: 읽기와 쓰기만 가능
  • 그룹 및 기타 사용자: 접근 불가

이는 중요한 보안 모범 사례입니다. 민감한 파일은 항상 600 또는 400(읽기 전용) 권한으로 관리해야 합니다.

4. 디렉터리 안전하게 공유하기

시나리오:
여러 개발자가 접근할 수 있는 공유 디렉터리 shared_folder를 생성합니다.

chmod 770 shared_folder

의미:

  • 소유자와 그룹: 전체 권한 (rwx)
  • 기타 사용자: 접근 불가

개발 팀을 그룹으로 지정하면 안전하고 효율적인 협업이 가능해집니다. 그룹 구성원은 chgrp 명령으로 조정할 수 있습니다.

5. 잘못된 설정으로 인한 문제 방지

시나리오:
chmod -R 777 . 명령을 실수로 실행해 모든 파일이 누구에게나 쓰기 가능해졌습니다.

권장 예방 조치:

  • 파일과 디렉터리를 구분하기 위해 항상 find를 사용합니다.
  • 사전에 ls -l로 권한을 확인합니다.
  • 변경 사항을 먼저 스테이징 환경에서 테스트합니다.

9. 자주 묻는 질문 (FAQ)

Q1. chmod 644-rw-r--r--의 차이점은 무엇인가요?

A. 두 표기는 동일한 권한을 나타내며, 표기 방식만 다릅니다.

  • chmod 644 : 숫자 형태의 권한 지정
  • -rw-r--r-- : ls -l에 표시되는 기호 형태의 권한

Q2. 파일에 실행 권한이 없으면 어떻게 되나요?

A. 스크립트나 바이너리를 실행하면 실패합니다.

bash: ./script.sh: Permission denied

해결 방법:

chmod +x script.sh

Q3. 디렉터리에 644를 설정해도 안전한가요?

A. 일반적으로, 아니요.

디렉토리는 접근하기 위해 실행 권한 (x)이 필요합니다.

올바른 설정:

chmod 755 directory_name

Q4. chmod -R을 사용할 때 위험은 있나요?

A. 네. 파일과 디렉토리 모두에 동일한 권한이 적용됩니다.

chmod -R 644 my_project/

이것은 디렉토리에서 실행 권한을 제거합니다.

더 안전한 접근법:

find my_project/ -type d -exec chmod 755 {} \;
find my_project/ -type f -exec chmod 644 {} \;

Q5. 계속 “Permission denied.” 오류가 발생합니다. 무엇을 확인해야 하나요?

A. 다음을 확인하세요:

  • 파일이 실행되는 경우 실행 권한이 있는지
  • 소유자이거나 쓰기 권한이 있는지
  • 디렉토리에 실행 권한이 있는지
  • 필요하다면 sudo 권한이 있는지

Q6. 파일을 공유하고 싶지만 편집을 방지하려면 어떻게 해야 하나요?

A. 권한 644 또는 444를 사용하세요.

chmod 644 share.txt
  • 644: 다른 사용자는 읽기만 가능
  • 444: 모든 사람이 읽기 전용 액세스

Q7. 실수로 권한을 변경했습니다. 어떻게 복원하나요?

A. 올바르게 구성된 파일과 비교하세요.

ls -l /path/to/correct_file

chmod를 사용하여 권한을 다시 적용하세요. 이상적으로는 프로젝트의 기본 권한을 문서화하세요.

10. 요약

왜 chmod와 권한을 이해하는 것이 중요한가

이 기사는 Linux와 Unix-like 시스템에서 널리 사용되는 chmod 명령어와 -rw-r--r--와 같은 기호적 권한의 의미를 설명했습니다.

이 개념들은 시스템 보안, 운영 안정성, 정확한 파일 공유를 보장하는 데 필수적입니다.

주요 요점

  • chmod는 파일과 디렉토리 액세스 권한을 수정합니다
  • -rw-r--r--는 소유자가 읽기와 쓰기가 가능하고, 다른 사용자는 읽기만 가능함을 의미합니다
  • 숫자 ( 644 )와 기호적 ( -rw-r--r-- ) 표현은 동등합니다
  • 권한은 숫자 또는 기호 모드를 사용하여 설정할 수 있습니다
  • ls -l은 권한을 확인하는 데 사용됩니다
  • Nautilus, WinSCP, FileZilla와 같은 GUI 도구도 권한을 관리할 수 있습니다
  • 잘못된 권한은 종종 “Permission denied” 오류를 일으킵니다
  • 일반적으로 사용되는 권한 패턴 뒤에는 항상 이유가 있습니다

“최적” 권한은 맥락에 따라 다릅니다

모든 경우에 맞는 보편적인 권한 설정은 없습니다.
권한은 항상 목적, 사용자, 요구되는 보안 수준에 따라 선택해야 합니다.

최종 조언

권한이 처음에는 복잡해 보일 수 있지만, chmod를 마스터하면 문제를 사전에 방지하고 시스템을 안전하게 운영할 수 있습니다.

항상 스스로 물어보세요:
누가 이 파일에 액세스해야 하며, 어떤 목적으로?
이 관점을 유지하면 안전하고 신뢰할 수 있는 Linux 환경을 구축하는 데 도움이 됩니다.

侍エンジニア塾