Computer >> 컴퓨터 >  >> 소프트웨어 >> 소프트웨어

리눅스 파일 권한 완벽 가이드: Chmod 777의 의미와 안전한 사용법

리눅스를 처음 접하는 사용자라면 어느 시점에서 반드시 chmod 명령어를 만나게 됩니다. "chmod 777"을 입력하면 파일을 특정 폴더로 옮길 수 있다는 조언을 듣고, 실제로 잘 작동했던 경험이 있을 것입니다. 그렇다면 chmod 명령어는 정확히 어떤 역할을 하며, 뒤따르는 숫자들은 무엇을 의미할까요?

이 글에서는 리눅스 파일 권한에 대해 알아야 할 모든 내용을 다룹니다. chmod 명령어와 특정 접근 수준에 해당하는 숫자들을 제대로 이해하려면 파일 권한의 기본 개념을 아는 것이 필수적입니다. Ubuntu, Fedora 또는 기타 리눅스 배포판을 사용하든, 언제 777 권한을 설정해도 되는지, 언제 다른 설정을 사용해야 하는지 이해해야 합니다.

리눅스 파일 권한의 기본 개념

리눅스 운영체제는 파일 권한(permission), 소유권(ownership), 속성(attributes)을 기준으로 누가 특정 파일에 접근할 수 있는지를 결정합니다. 소유자 또는 관리자는 각종 파일과 디렉터리에 접근 제한을 설정할 수 있으며, 신뢰하는 사용자와 프로그램에만 접근 권한을 부여함으로써 시스템 보안을 크게 강화할 수 있습니다.

사용자 클래스 이해하기

모든 파일과 디렉터리는 특정 사용자와 그룹에 소속됩니다. 따라서 접근 수준을 지정할 수 있는 세 가지 사용자 범주가 존재합니다.

  • 소유자(Owner)
  • 그룹(Group)
  • 기타(Others)

Ubuntu에서는 디렉터리를 우클릭하고 속성(Properties)을 선택한 후 권한(Permissions) 탭으로 이동하면 이 그룹들을 시각적으로 확인할 수 있습니다.

리눅스 파일 권한 완벽 가이드: Chmod 777의 의미와 안전한 사용법

소유자는 모든 권한을 가진 사람입니다. 일반적으로 모든 파일과 디렉터리에 대한 전체 접근 권한을 갖으며, 다른 사용자들의 파일 권한도 변경할 수 있습니다.

그룹은 소유자가 지정한 수준의 접근 권한을 부여받은 여러 사용자들의 집합입니다. 예를 들어, 특정 그룹의 사용자들은 파일을 수정할 수 없도록 제외하면서 읽기 권한만 허용할 수 있습니다.

기타(Others) 클래스는 앞의 두 범주에 속하지 않는 게스트 사용자를 의미합니다. 기본적으로 접근 수준이 제한되어 있으며, 게스트가 무엇을 할 수 있고 없는지는 소유자가 결정합니다.

파일 권한 수준 이해하기

소유자는 자신의 파일과 디렉터리에 세 가지 수준의 접근 권한을 부여할 수 있습니다.

  1. 읽기(Read): 파일을 읽거나 디렉터리 내용을 볼 수 있는 제한된 접근 권한입니다. 파일을 편집하거나 디렉터리에 새 파일을 추가·삭제할 수는 없습니다.
  2. 쓰기(Write): 파일을 읽고 수정할 수 있습니다. 디렉터리에 이 권한을 부여하면 파일을 추가하거나 삭제할 수도 있습니다.
  3. 실행(Execute): 파일을 실행할 때 필요한 권한입니다. 실행 권한이 없으면 스크립트나 프로그램을 구동할 수 없습니다.

클래스와 권한을 조합하면 특정 사용자가 파일이나 디렉터리에 얼마나 접근할 수 있는지 세밀하게 제어할 수 있습니다.

권한 기호와 숫자의 의미

파일 권한은 숫자 형식 또는 기호 형식으로 표현됩니다. 두 방식 모두 파일과 디렉터리 권한 변경에 사용할 수 있으며, 숫자가 더 간편하지만 기호 표기법도 함께 이해해두면 좋습니다. 먼저 기호 표기법부터 살펴보겠습니다.

파일 권한 기호

터미널에서 다음 명령어를 입력하면 특정 디렉터리 내 모든 항목의 권한을 확인할 수 있습니다.

ls -l

리눅스 파일 권한 완벽 가이드: Chmod 777의 의미와 안전한 사용법

cd 명령어로 원하는 디렉터리로 이동할 수 있습니다. 리눅스를 처음 사용한다면 기본 리눅스 명령어 관련 자료를 먼저 참고하는 것이 좋습니다.

예제에서 이 디렉터리는 하위 디렉터리 두 개와 파일 하나를 포함하고 있습니다. 권한은 9개의 기호(앞의 1개 유형 문자 포함)로 표시되며, 이해하기 쉽도록 세 개씩 묶어 분석할 수 있습니다. Books 디렉터리의 첫 번째 권한 세트를 살펴보겠습니다.

drwxrwxr-x

가독성을 위해 나누면 다음과 같습니다.

d rwx rwx r-x

첫 번째 기호 d는 directory(디렉터리)를 의미합니다. 파일인 경우에는 Outline.docx의 세 번째 권한 세트에서 볼 수 있듯이 대시(-) 기호가 표시됩니다.

그다음에는 세 개의 기호 그룹이 이어집니다. 첫 번째 그룹은 소유자의 권한, 두 번째 그룹은 그룹 클래스의 권한, 세 번째 그룹은 기타 사용자의 권한을 나타냅니다.

각 3자리 세트는 순서대로 읽기(r), 쓰기(w), 실행(x)을 의미합니다. 즉, 위 예제에서 소유자는 Test 디렉터리 내부의 모든 파일과 디렉터리를 읽고, 쓰고, 실행할 수 있습니다.

리눅스 파일 권한 완벽 가이드: Chmod 777의 의미와 안전한 사용법

r, w, x 대신 대시(-) 기호가 보이면 해당 권한이 존재하지 않는다는 뜻입니다.

파일 권한 숫자

숫자 형식의 파일 권한은 매우 단순합니다. 권한 코드는 세 자리 숫자로 구성됩니다.

  • 첫 번째 자리는 파일 소유자를 위한 것입니다.
  • 두 번째 자리는 파일이 속한 그룹을 나타냅니다.
  • 마지막 자리는 그 외 모든 사용자를 위한 것입니다.

각 자리 숫자는 0부터 7까지이며, 기본값은 다음과 같습니다.

  • 4 = 읽기(read)
  • 2 = 쓰기(write)
  • 1 = 실행(execute)
  • 0 = 권한 없음

각 클래스의 권한 숫자는 해당 권한 값들의 합으로 결정됩니다. 즉, 각 자리는 4, 2, 1, 0의 조합이 될 수 있습니다. 전체 권한 목록은 다음과 같습니다.

  • 0 = 어떤 권한도 없음
  • 1 = 실행 권한만 있음
  • 2 = 쓰기 권한만 있음
  • 3 = 쓰기 및 실행 권한
  • 4 = 읽기 권한만 있음
  • 5 = 읽기 및 실행 권한
  • 6 = 읽기 및 쓰기 권한
  • 7 = 모든 권한

예를 들어 644 권한은 파일 소유자에게 읽기·쓰기 권한을, 나머지 두 클래스에는 읽기 권한만 부여한다는 의미입니다. 숫자 형식으로 권한을 설정하는 데는 기본적인 산수만 알면 됩니다.

리눅스 파일 권한 완벽 가이드: Chmod 777의 의미와 안전한 사용법

777 권한의 의미와 위험성

이미 짐작하셨겠지만, 777 권한은 세 가지 사용자 클래스 모두에게 읽기, 쓰기, 실행 권한을 부여합니다. 다시 말해 시스템에 접근할 수 있는 누구나 파일을 읽고, 수정하고, 실행할 수 있습니다. 따라서 모든 사용자를 완전히 신뢰하고 보안 침해를 걱정할 필요가 없는 경우에만 사용해야 합니다.

777 권한은 편리해서 자주 사용되지만, 가능한 한 절제해서 사용해야 합니다. 사실상 사용하지 않는 것이 좋을 만큼 보안 위험이 큽니다. 인가되지 않은 사용자가 시스템을 침해하거나, 예를 들어 웹사이트를 변조하여 악성코드를 유포하는 데 악용할 수 있습니다.

대신 755 권한을 부여하는 것이 좋습니다. 이렇게 하면 파일 소유자는 해당 파일이나 디렉터리에 대한 전체 권한을 유지하면서, 다른 모든 사용자는 읽기와 실행만 가능하고 소유자의 승인 없이는 수정할 수 없습니다.

Chmod로 파일 권한 수정하기

chmod 명령어를 사용하면 파일 권한을 변경할 수 있습니다. 다른 변수 없이 이 명령어를 사용하는 가장 기본적인 방법은 다음과 같습니다.

chmod 777 filename

"filename"을 실제 파일 이름과 경로로 바꾸면 됩니다.

단, 파일 권한을 변경할 수 있는 사용자는 root 권한을 가진 사용자, 파일 소유자, sudo 권한을 가진 사용자뿐이라는 점을 기억하세요.