리눅스/유닉스 파일 권한: 읽기, 쓰기 및 변경 방법

⚡ 스마트 요약

리눅스와 유닉스에서 파일 권한은 각 파일에 대한 읽기, 쓰기, 실행 권한을 제어하여 다중 사용자 시스템을 두 가지 계층으로 보호합니다. 하나는 사용자, 그룹 및 기타 사용자에게 권한을 할당하는 소유권이고, 다른 하나는 읽기, 쓰기, 실행 권한 비트입니다.

  • 👥 주인 : 모든 파일과 디렉터리는 사용자(소유자), 그룹, 그리고 때때로 '월드'라고도 불리는 다른 사람들의 소유입니다.
  • 🔑 권한 : 각 소유자 클래스에는 읽기(r), 쓰기(w), 실행(x)의 세 가지 권한이 적용됩니다.
  • 📃 리스팅 : ls -l 명령어는 소유자, 그룹 및 전체 사용자에 대해 -rw-rw-r–과 같은 권한 문자열을 표시합니다.
  • 🔢 절대 모드: chmod 명령어는 세 자리 8진수를 사용하여 세 클래스 모두에 대한 권한을 한 번에 설정합니다. 예를 들어 764를 사용할 수 있습니다.
  • 기호 모드: u, g, o, a 및 +, -, = 명령어를 사용한 chmod 명령은 다른 소유자 클래스는 건드리지 않고 하나의 소유자 클래스만 변경합니다.
  • 🧭 소유권 명령: chown 명령어는 소유자와 그룹을 모두 변경하는 반면, chgrp 명령어는 그룹만 변경합니다.
  • 🤖 AI 도움말: AI 비서와 GitHub Copilot은 chmod 및 chown 명령어를 생성하고 설명할 수 있습니다.

리눅스 및 유닉스에서의 파일 권한: 읽기, 쓰기 및 변경 방법

파일 권한 Linux 유닉스는 각 파일에 대한 읽기, 수정 또는 실행 권한을 결정하여 공유 다중 사용자 시스템의 보안을 유지합니다. 이 페이지에서는 파일 소유권, 읽기, 쓰기 및 실행 권한, 그리고 이러한 권한을 변경하는 명령어에 대해 설명합니다.

리눅스는 여러 사용자가 동시에 접근할 수 있는 다중 사용자 운영 체제인 유닉스의 복제본입니다. 리눅스는 메인프레임과 서버에서도 수정 없이 사용할 수 있습니다. 하지만 이로 인해 보안 문제가 발생할 수 있는데, 허가받지 않은 사용자나 악의적인 사용자가 중요한 데이터를 손상시키거나 변경하거나 삭제할 수 있기 때문입니다. 효과적인 보안을 위해 리눅스는 권한을 두 단계로 나눕니다.

  • 소유권
  • 허가

리눅스에서 파일 권한과 소유권 개념은 매우 중요합니다. 여기서는 리눅스 권한과 소유권에 대해 설명하고, 두 가지 모두에 대해 자세히 살펴보겠습니다. 먼저 소유권부터 시작해 보겠습니다.

리눅스 파일 소유권

유닉스/리눅스 시스템의 모든 파일과 디렉터리에는 아래와 같이 세 가지 유형의 소유자가 지정됩니다. 아래 다이어그램은 소유권이 사용자, 그룹 및 기타 사용자에게 어떻게 매핑되는지 보여줍니다.

리눅스 파일 소유권 다이어그램 (사용자, 그룹 및 기타 권한 클래스 표시)

사용자

사용자는 파일의 소유자입니다. 기본적으로 파일을 만든 사람이 소유자가 됩니다. 따라서 사용자를 소유자라고도 합니다.

그룹

A 사용자 그룹 그룹에는 여러 사용자가 포함될 수 있습니다. 그룹에 속한 모든 사용자는 해당 파일에 대해 동일한 Linux 그룹 권한을 갖습니다. 예를 들어, 여러 사람이 특정 파일에 접근해야 하는 프로젝트가 있다고 가정해 보겠습니다. 각 사용자에게 수동으로 권한을 할당하는 대신, 모든 사용자를 그룹에 추가하고 해당 그룹에 파일 권한을 부여하면 그룹 구성원만 파일을 읽거나 수정할 수 있습니다.

기타

파일에 접근 권한이 있는 다른 모든 사용자를 의미합니다. 이 사용자는 파일을 생성한 사용자도 아니고, 파일을 소유할 수 있는 사용자 그룹에 속한 사용자도 아닙니다. 사실상 모든 사용자를 뜻합니다. 따라서 다른 사용자에게 권한을 설정하는 것은 '전 세계 사용자에 대한 권한 설정'이라고도 합니다.

이제 중요한 질문이 생깁니다. 리눅스는 어떻게 이 세 가지 사용자 유형을 구분하여 사용자 'A'가 다른 사용자 'B'의 중요한 정보나 데이터가 포함된 파일에 접근하지 못하도록 할까요? 마치 동료가 당신의 컴퓨터에서 작업하는 것을 원치 않는 것과 같습니다. Linux 컴퓨터 이미지를 보려면 권한이 필요합니다. 권한은 사용자의 동작을 정의합니다.

리눅스의 권한 시스템에 대해 알아보겠습니다.

Linux 파일 권한

유닉스/리눅스 시스템의 모든 파일과 디렉터리에는 위에서 설명한 세 명의 소유자 모두에 대해 다음과 같은 세 가지 권한이 정의되어 있습니다.

  • 읽기 : 이 권한은 파일을 열고 읽을 수 있는 권한을 부여합니다. 디렉터리에 대한 읽기 권한은 해당 디렉터리의 내용을 나열할 수 있는 권한을 부여합니다.
  • 쓰다: 쓰기 권한은 파일의 내용을 수정할 수 있는 권한을 부여합니다. 디렉터리에 대한 쓰기 권한은 해당 디렉터리에 저장된 파일을 추가, 삭제 및 이름을 변경할 수 있는 권한을 부여합니다. 파일에 대한 쓰기 권한은 있지만 파일이 저장된 디렉터리에 대한 쓰기 권한이 없는 경우를 생각해 보세요. 이 경우 파일 내용은 수정할 수 있지만 디렉터리에서 파일의 이름을 바꾸거나 이동하거나 삭제할 수는 없습니다.
  • 실행 : In Windows일반적으로 실행 가능한 프로그램은 ".exe" 확장자를 가지며, 이를 통해 쉽게 실행할 수 있습니다. 유닉스/리눅스에서는 실행 권한이 설정되어 있지 않으면 프로그램을 실행할 수 없습니다. 실행 권한이 설정되어 있지 않더라도 (읽기 및 쓰기 권한이 설정되어 있는 경우) 프로그램 코드를 보거나 수정할 수는 있지만 실행할 수는 없습니다.

리눅스에서 파일 권한을 예제를 통해 살펴보겠습니다. 터미널에서 `ls -l` 명령을 실행하면 다음과 같은 결과가 나옵니다.

ls -l

아래 스크린샷은 권한 문자열을 긴 목록으로 보여줍니다.

터미널에서 `ls -l` 명령어를 실행하면 파일의 권한 문자열이 `rw-rw-r--`로 표시됩니다.

여기서 '-rw-rw-r–' 부분을 강조 표시했는데, 이 특이하게 생긴 코드는 소유자, 사용자 그룹 및 전체 사용자에게 부여된 유닉스 권한에 대한 정보를 제공합니다.

여기서 첫 번째 '-'는 파일을 선택했음을 의미합니다. 아래 아이콘은 일반 파일을 나타냅니다.

나열된 항목이 일반 파일임을 나타내는 작은 아이콘

그렇지 않고 디렉토리였다면 아래 목록처럼 'd'가 표시되었을 것입니다.

터미널 목록에 권한 문자열에 'd'로 시작하는 디렉터리가 표시됩니다.

캐릭터는 기억하기 쉽습니다.

  • r = 읽기 권한
  • w = 쓰기 권한
  • x = 실행 권한
  • – = 허가 없음

이렇게 생각해 봅시다. 코드의 첫 부분은 'rw-'입니다. 이는 소유자 'Home'이 다음과 같은 권한을 가지고 있음을 의미합니다.

  • 파일 읽기
  • 파일 쓰기 또는 편집

파일 소유자는 실행 권한이 '-'로 설정되어 있으므로 파일을 실행할 수 없습니다. 아래 아이콘은 실행 권한이 '-'로 해제된 상태를 보여줍니다.

실행 권한 비트가 지워져 대시(-)로 표시된 작은 아이콘입니다.

설계상 Fedora, CentOS와 같은 많은 Linux 배포판은 다음과 같은 특징을 가지고 있습니다. Ubuntu 사용자를 사용자 이름과 같은 이름의 그룹에 추가합니다. 예를 들어, 'tom'이라는 사용자는 'tom'이라는 이름의 그룹에 추가됩니다.

두 번째 부분은 'rw-'입니다. 이는 '홈' 사용자 그룹에 대한 권한이며, 그룹 구성원은 다음과 같은 권한을 가집니다.

  • 파일 읽기
  • 파일 쓰기 또는 편집

세 번째 부분은 전 세계 모든 사용자를 위한 것입니다. 'r–'이라고 표시되어 있는데, 이는 사용자가 다음 작업만 수행할 수 있음을 의미합니다.

  • 파일 읽기

아래 분석은 권한 문자열의 각 부분을 소유자, 그룹 및 전체 사용자에게 매핑합니다.

rw-rw-r-- 권한 문자열을 소유자, 그룹 및 전체 사용자 섹션으로 분해

리눅스에서 'chmod' 명령어를 사용하여 파일/디렉토리 권한 변경하기

예를 들어 동료가 개인 사진을 보지 못하게 하고 싶다면 파일 권한을 변경하면 됩니다.

'chmod' 명령어를 사용할 수 있습니다. 명령`change`는 '모드 변경'을 의미합니다. 이 명령어를 사용하면 파일이나 디렉터리에 대해 소유자, 그룹, 그리고 모든 사용자에게 읽기, 쓰기, 실행 권한을 설정할 수 있습니다.

구문 :

chmod permissions filename

명령어를 사용하는 방법은 두 가지입니다.

  • 절대 모드
  • 심볼릭 모드

리눅스에서의 절대(숫자) 모드

이 모드에서는 파일 권한이 문자가 아닌 3자리 8진수로 표시됩니다. 아래 표는 모든 권한 유형에 대한 숫자를 보여줍니다.

번호 권한 유형 상징
0 비허가 -
1 실행하다 -엑스
2 쓰다 -w-
3 실행 + 쓰기 -wx
4 읽기 아르 자형-
5 읽기 + 실행 rx
6 읽기 + 쓰기 rw-
7 읽기 + 쓰기 + 실행 rwx

아래 터미널 창에 표시된 것처럼 chmod 명령어가 어떻게 작동하는지 살펴보겠습니다.

터미널에서 `chmod 764` 명령어를 실행하여 `sample` 파일의 권한을 변경합니다.

위의 터미널 창에서 'sample' 파일의 권한을 '764'로 변경했습니다. '764'의 절대 경로는 다음과 같습니다.

  • 소유자는 읽기, 쓰기 및 실행 권한을 가집니다.
  • 사용자 그룹은 읽기 및 쓰기 권한을 가지고 있습니다.
  • 세상은 오직 읽을 수 있을 뿐이다.

이는 아래 결과와 같이 '-rwxrw-r–'로 표시됩니다.

chmod 764 명령 실행 후 -rwxrw-r-- 권한 문자열이 적용된 샘플 파일의 터미널 출력 결과입니다.

리눅스에서 파일에 대한 사용자 권한을 변경하는 방법은 절대값을 지정하는 것입니다.

Linux의 기호 모드

절대 모드에서는 세 명의 소유자 모두의 권한을 변경할 수 있습니다. 기호 모드에서는 특정 소유자의 권한만 수정할 수 있습니다. 이 모드는 수학 기호를 사용하여 유닉스 파일 권한을 수정합니다.

Opera바위 산 기술설명
+ 파일이나 디렉터리에 권한을 추가합니다.
- 권한을 제거합니다.
= 권한을 설정하고 이전에 설정된 권한을 재정의합니다.

각 소유주는 다음과 같습니다.

사용자 의미
u 사용자 / 소유자
g 그룹
o 기타
a 모든

우리는 755와 같은 숫자가 아닌 rwx와 같은 문자를 사용하여 권한을 지정할 것입니다. 아래 예시를 살펴보겠습니다.

터미널에서 u, g, o 및 +, -, = 키를 사용하여 기호 chmod 명령으로 특정 권한을 변경합니다.

Linux에서 소유권 및 그룹 변경

파일이나 디렉터리의 소유권을 변경하려면 다음 명령어를 사용할 수 있습니다.

chown user filename

파일이나 디렉터리의 사용자 및 그룹을 모두 변경하려면 다음 명령어를 사용하십시오.

chown user:group filename

아래 그림과 같이 실제로 어떻게 작동하는지 살펴보겠습니다.

터미널에서 chown 명령어를 실행하여 파일의 소유자와 그룹을 변경하는 화면입니다.

그룹 소유자만 변경하려면 다음 명령어를 사용하세요.

chgrp group_name filename

'chgrp'는 그룹 변경을 의미합니다. 아래 스크린샷은 chgrp 명령어를 사용하는 방법을 보여줍니다.

터미널에서 chgrp 명령어를 실행하여 파일의 그룹 소유자만 변경하는 화면입니다.

  • /etc/group 파일에는 시스템에 정의된 모든 그룹이 포함되어 있습니다.
  • 아래와 같이 "groups" 명령어를 사용하면 자신이 속한 모든 그룹을 찾을 수 있습니다.

사용자가 속한 그룹 목록을 보여주는 groups 명령어를 터미널에서 실행합니다.

  • 아래와 같이 `newgrp` 명령어를 사용하면 기본 그룹이 아닌 다른 그룹의 구성원으로 작업할 수 있습니다.

다른 그룹으로 전환하기 위해 newgrp 명령어를 실행하는 터미널 화면입니다.

  • 두 그룹이 동일한 파일을 소유할 수 없습니다.
  • 리눅스에서는 그룹이 중첩될 수 없습니다. 한 그룹이 다른 그룹의 하위 그룹이 될 수 없습니다.
  • x — 디렉터리 실행이란 디렉터리에 "진입"하여 하위 디렉터리에 접근할 수 있도록 허용하는 것을 의미합니다.
  • 파일과 디렉터리에 설정할 수 있는 다른 권한들이 있으며, 이는 이후 고급 튜토리얼에서 다룰 예정입니다.

자주 묻는 질문

chmod 명령어를 사용하여 실행 권한을 부여하세요. 기호 형식인 chmod +x script.sh는 모든 사용자에게 실행 권한을 부여하고, chmod u+x script.sh는 소유자에게만 실행 권한을 부여합니다. 그 후, 해당 디렉토리에서 ./script.sh 명령어를 사용하여 스크립트를 직접 실행할 수 있습니다.

umask는 새로 생성되는 파일과 디렉터리에서 제거되는 기본 권한을 설정합니다. 파일의 권한은 666부터 시작하고 디렉터리의 권한은 777부터 시작하며, 그 이후에는 umask 값이 666 미만으로 설정됩니다.trac테드. 일반적인 umask 값 022는 파일에 대해 644, 디렉터리에 대해 755의 접근 권한을 부여합니다. 현재 값을 확인하려면 umask 명령을 실행해 보세요.

이것들은 특별한 권한 비트입니다. setuid는 프로그램을 소유자의 권한으로 실행하고, setgid는 그룹을 권한으로 실행하거나 새 파일이 디렉터리의 그룹을 상속받도록 하며, 스티키 비트는 /tmp와 같은 공유 디렉터리 내에서 파일 소유자만 파일을 삭제할 수 있도록 합니다.

네. 루트 사용자 또는 sudo 권한을 가진 사용자만 chown 명령어를 사용하여 파일 소유자를 변경할 수 있습니다. 일반 소유자는 자신이 속한 그룹에게 파일 소유권을 넘겨줄 수는 있지만, 보안상의 이유로 다른 사용자에게 다시 할당하려면 루트 권한이 필요합니다.

해당 오류는 파일 변경 권한이 없음을 의미합니다. `chmod` 명령어를 실행하려면 파일 소유자이거나 루트 권한이 필요하며, `chown` 명령어를 실행하려면 일반적으로 루트 권한이 필요합니다. 명령어 앞에 `sudo`를 붙이거나 파일 소유자로 전환한 후 다시 시도하십시오.

-R 옵션을 사용하여 재귀적으로 권한을 적용하세요. `chmod -R 755 myfolder`는 해당 폴더와 그 안에 있는 모든 파일 및 하위 폴더에 권한을 적용하고, `chown -R user:group myfolder`는 소유권을 변경합니다. -R 옵션은 폴더 아래의 모든 항목에 영향을 미치므로 주의해서 사용해야 합니다.

AI 비서는 "이 스크립트를 나만 실행할 수 있도록 설정해 줘"와 같은 요청을 적절한 chmod 명령어로 변환하고, 755와 같은 모드의 의미를 설명하며, 777과 같은 위험한 설정에 대해 경고할 수 있습니다. 머신러닝 기반 보안 도구는 권한이 지나치게 개방적인 것으로 보이는 파일을 표시하기도 합니다.

예. GitHub 부조종사 원하는 권한이나 소유자를 설명하는 간단한 설명을 입력하면 chmod, chown, chgrp 명령어를 제안하고 입력하는 동안 자동으로 완성해 줍니다. Rev권한 및 소유권 변경은 보안에 영향을 미치므로 실행하기 전에 각 제안 사항을 검토하십시오.

이 게시물을 요약하면 다음과 같습니다.