Linux에서 umask는 무엇이며 어떻게 사용합니까?

게시 됨: 2022-07-29
bash 프롬프트를 표시하는 Linux 노트북
Fatmawati achmad zaenuri/Shutterstock.com

Linux에서는 모든 디렉토리와 파일에 액세스 권한이 있습니다. chmod 를 사용하여 다른 사용자에 대한 기본 액세스 권한을 설정할 수 있습니다. 그러나 기본 권한을 결정하는 것은 무엇입니까? umask 에 대해 알아보겠습니다.

액세스 권한

모든 디렉토리와 파일에는 읽기, 쓰기 또는 실행할 수 있는지 여부를 결정하는 모드 비트 라는 플래그가 있습니다. 파일을 실행한다는 것은 파일을 프로그램이나 스크립트처럼 실행하는 것을 의미합니다. 디렉토리의 경우 cd 를 "실행"할 수 있어야 합니다. 집합적으로 비트 모드 설정을 디렉토리 또는 파일의 권한 이라고 합니다.

세 가지 권한 집합이 있습니다. 한 세트는 디렉토리 또는 파일의 소유자를 위한 것입니다. chown 으로 소유권을 변경하지 않는 한 소유자는 디렉토리나 파일을 만든 사람입니다.

Linux 파일 권한은 어떻게 작동합니까?
관련 Linux 파일 권한은 어떻게 작동합니까?

두 번째 권한 집합은 디렉터리 또는 파일이 할당된 사용자 그룹의 구성원을 위한 것입니다. 일반적으로 소유자의 사용자 그룹입니다.

"기타"에 대한 세 번째이자 마지막 권한 집합이 있습니다. 처음 두 세트에 포함되지 않은 모든 사람을 위한 포괄적인 내용입니다.

이와 같이 권한을 분리하여 세 가지 범주에 서로 다른 기능을 부여할 수 있습니다. 이것이 Linux에서 디렉토리 및 파일 액세스를 제어하는 ​​방법입니다. 간단한 구성표이지만 디렉토리나 파일에 대해 누가 무엇을 할 수 있는지 지시하는 유연하고 강력한 방법을 제공합니다.

모드 비트

ls 명령과 -l (긴 형식) 옵션을 사용하여 파일에 대한 권한을 볼 수 있습니다.

 ls -l 모든*

또한 -d (디렉토리) 옵션을 추가하여 디렉토리를 살펴봅니다. 이 옵션이 없으면 ls 는 디렉토리 자체가 아니라 디렉토리 내부의 파일을 봅니다.

 ls -ld 

ls를 사용하여 디렉토리 및 파일에 대한 권한 보기

ls 목록의 각 항목 시작 부분에는 10자 모음이 있습니다. 다음은 파일 및 디렉토리에 대한 해당 문자의 클로즈업입니다.

파일 및 디렉토리의 권한, 클로즈업

파일이 맨 위 줄이고 디렉토리가 맨 아래 줄입니다. 맨 처음 문자는 디렉토리 또는 파일을 보고 있는지 여부를 알려줍니다. "d"는 디렉토리를 나타내고 대시 " - "는 파일을 나타냅니다.

세 가지 권한 집합은 세 문자의 각 그룹으로 표시됩니다. 왼쪽에서 오른쪽으로 소유자, 그룹 및 기타 권한입니다. 각 권한 집합에서 왼쪽에서 오른쪽으로 세 개의 문자는 읽기 권한 "r", 쓰기 권한 "w" 및 실행 "x" 권한에 대한 설정을 나타냅니다. 문자는 권한이 설정되었음을 의미합니다. 대시 " - "는 권한이 설정되지 않았음을 의미합니다.

예제 파일에서 10자는 다음을 의미합니다.

  • : 디렉토리가 아닌 파일입니다.
  • rwx : 소유자는 이 파일을 읽고, 쓰고, 실행할 수 있습니다.
  • rw- : 이 파일이 할당된 동일한 그룹의 다른 구성원은 파일을 읽고 쓸 수 있지만 실행할 수는 없습니다.
  • r– : 다른 모든 사람은 파일을 읽을 수만 있습니다.

예제 디렉토리의 경우 10자는 다음을 의미합니다.

  • d : 디렉토리입니다.
  • rwx : 소유자는 이 디렉토리를 읽고, 쓰고, 실행할 수 있습니다( cd 로).
  • rwx : 같은 그룹의 다른 구성원이 이 디렉토리에서 읽고, 쓰고, cd 할 수 있습니다.
  • rx : 다른 모든 사람이 이 디렉토리로 cd 할 수 있지만 파일을 읽을 수만 있습니다. 파일을 삭제하거나 편집하거나 새 파일을 만들 수 없습니다.

권한은 디렉토리 또는 파일의 메타데이터에서 모드 비트에 저장됩니다. 각 모드 비트에는 숫자 값이 있습니다. 설정되지 않은 경우 모두 0 값을 갖습니다.

  • r : 설정된 경우 읽기 비트의 값은 4입니다.
  • w : 쓰기 비트가 설정되면 2의 값을 갖습니다.
  • x : 실행 비트가 설정되면 1의 값을 갖습니다.

세 가지 권한 집합은 비트 값의 합으로 나타낼 수 있습니다. 최대값은 4+2+1=7이며 세트의 세 가지 권한을 모두 "켜기"로 설정합니다. 즉, 세 세트 모두의 모든 순열이 세 자리 8진수(8진수) 값으로 캡처될 수 있습니다.

위에서 예제 파일을 가져오면 소유자는 4+2+1=7인 읽기, 쓰기 및 실행 권한이 있습니다. 파일이 속한 그룹의 다른 구성원은 4+2=6인 읽기 및 쓰기 권한을 갖습니다. 기타 범주에는 읽기 권한 집합만 4로 설정되어 있습니다.

따라서 해당 파일에 대한 권한은 764로 표현될 수 있습니다.

동일한 체계를 사용하면 디렉토리에 대한 권한은 775가 됩니다. stat 명령을 사용하여 권한의 8진수 표현을 볼 수 있습니다.

Linux에서 chmod 명령을 사용하는 방법
관련 Linux에서 chmod 명령을 사용하는 방법

chmod ( ch ange mod e bits) 명령은 디렉토리와 파일에 대한 권한을 설정하는 데 사용되는 도구입니다. 그러나 디렉토리나 파일을 생성할 때 어떤 권한이 설정되는지는 지시하지 않습니다. 이를 위해 기본 권한 집합이 사용됩니다.

기본 권한 및 umask

디렉토리에 대한 기본 권한은 777이고 파일에 대한 기본 권한은 666입니다. 이는 모든 사용자에게 모든 디렉토리에 대한 전체 액세스 권한과 모든 파일을 읽고 쓸 수 있는 권한을 부여합니다. 실행 비트가 파일에 설정되어 있지 않습니다. 실행 비트가 이미 설정된 파일을 만들 수 없습니다. 보안 위험이 발생할 수 있습니다.

Linux에서 stat 명령을 사용하는 방법
관련 Linux에서 stat 명령을 사용하는 방법

그러나 새 디렉토리와 새 파일을 만들고 권한을 보면 777 및 666으로 설정되지 않습니다. 파일과 디렉토리를 만든 다음 grep 을 통해 파이프된 stat 를 사용하여 다음 행을 추출합니다. 권한의 8진수 표현입니다.

 터치 umask-article.txt
 mkdir 하우투긱
 통계 umask-article.txt | grep "액세스: ("
 통계 하우투긱 | grep "액세스: (" 

디렉토리 및 파일에 대한 기본 권한 및 각각에 대한 통계 출력

디렉토리의 경우 775로, 파일의 경우 664로 설정됩니다. umask 값이라고 하는 다른 값이 권한을 수정하므로 전역 기본 권한으로 설정되지 않습니다.

umask 값

umask 값은 루트에 대해 하나의 값과 다른 모든 사용자에 대해 다른 값으로 전역적으로 설정됩니다. 그러나 그것은 누구에게나 새로운 가치로 설정될 수 있습니다. 현재 umask 설정이 무엇인지 보려면 umask 명령을 사용하십시오.

 유마스크 

일반 사용자의 umask 값

그리고 루트의 경우:

 유마스크 

루트 사용자의 umask 값

새로 생성된 디렉토리 또는 파일에 대한 권한은 전역 기본 권한을 수정하는 umask 값의 결과입니다.

모드 비트와 마찬가지로 umask 값은 동일한 세 가지 권한 집합(소유자, 그룹 및 기타)을 나타내며 세 개의 8진수로 나타냅니다. 때때로 첫 번째 숫자가 0인 네 자리 숫자로 쓰여진 것을 볼 수 있습니다. 이것은 "이것은 8진수입니다."라고 말하는 약식 방법입니다. 가장 오른쪽에 있는 세 자리 숫자가 중요합니다.

umask 값은 권한을 추가 할 수 없습니다. 권한만 제거하거나 마스킹 할 수 있습니다. 그렇기 때문에 기본 권한이 매우 자유롭습니다. umask 값을 적용하여 합리적인 수준으로 감소하도록 설계되었습니다.

기본 권한 집합 중 하나가 모든 사용자에게 적합하지 않으며 모든 시나리오에 적합하지도 않습니다. 예를 들어, 루트가 만든 디렉토리와 파일은 일반 사용자보다 더 제한적인 권한이 필요합니다. 그리고 일반 사용자라도 다른 사람 범주의 모든 사람이 자신의 파일을 보고 변경할 수 있기를 원하지 않습니다.

umask가 권한을 마스킹하는 방법

기본 권한에서 마스크 값을 빼면 실제 권한이 제공됩니다. 즉, umask 값에 권한이 설정되어 있으면 디렉터리나 파일에 적용되는 권한에 설정 되지 않습니다 .

umask 값은 일반적인 권한 값의 역으로 ​​작동합니다.

  • 0 : 권한이 제거되지 않습니다.
  • 1 : 권한에서 실행 비트가 설정되지 않았습니다.
  • 2 : 권한에서 쓰기 비트가 설정되지 않았습니다.
  • 4 : 권한에서 읽기 비트가 설정되지 않았습니다.

디렉토리에 대한 기본 권한 777과 파일에 대한 666은 umask 값 002에 의해 수정되어 테스트 디렉토리 및 파일에 대한 최종 권한 775 및 664를 생성합니다.

 통계 umask-article.txt | grep "액세스: ("
 통계 하우투긱 | grep "액세스: (" 

디렉토리 및 파일에 대한 최종 권한

이렇게 하면 디렉토리와 파일 모두의 기타 범주에서 쓰기 권한이 제거됩니다.

루트가 디렉토리를 생성하면 umask 값 022가 적용됩니다. 기타 범주 및 그룹 범주에 대해서도 쓰기 권한이 제거됩니다.

 sudo mkdir 루트 디렉토리
 통계 하우투긱 | grep "액세스: (" 

루트가 디렉토리를 생성할 때의 권한

777의 기본 권한이 755로 줄어든 것을 볼 수 있습니다.

관련: Lynis를 사용하여 Linux 시스템의 보안을 감사하는 방법

기본 umask 값 변경

로그인 셸과 비로그인 셸에는 서로 다른 umask 값이 있습니다. 로그인 셸은 SSH를 통해 로컬로 또는 원격으로 로그인할 수 있는 셸입니다. 비 로그인 셸은 이미 로그인되어 있을 때 터미널 창 안에 있는 셸입니다.

로그인 셸 umask를 변경할 경우 매우 주의하십시오. 권한을 늘리고 보안을 낮추지 마십시오. 만약 있다면 그것들을 줄이고 더 제한적으로 만드는 경향이 있어야 합니다.

Ubuntu 및 Manjaro에서 umask 설정은 다음 파일에서 찾을 수 있습니다.

  • 로그인 셸 umask : 로그인 셸의 기본 umask 값: /etc/profile
  • 비 로그인 셸 : 비 로그인 셸의 경우 기본 umask 값: /etc/bash.bashrc

Fedora에서 umask 설정은 다음 파일에서 찾을 수 있습니다.

  • 로그인 셸 umask : 로그인 셸 기본 umask 값: /etc/profile
  • 비 로그인 셸 : 비 로그인 셸의 경우 기본 umask 값: /etc/bashrc

변경해야 할 긴급한 필요가 없다면 그대로 두는 것이 가장 좋습니다.

선호하는 방법은 기본값과 달라야 하는 개별 사용자 계정에 대해 새 umask 값을 설정하는 것입니다. 새로운 umask 설정은 사용자의 홈 디렉토리에 있는 ".bashrc" 파일에 넣을 수 있습니다.

 gedit .bashrc 

편집기에서 .bashrc 파일 열기

파일 상단 근처에 umask 설정을 추가합니다.

.bashrc 파일에 umask 값 추가

파일을 저장하고 편집기를 닫습니다. 새 터미널 창을 열고 umask 명령으로 umask 값을 확인하십시오.

 유마스크 

새 umask 값 확인

새 값이 활성화됩니다.

관련: Windows, macOS 또는 Linux에서 SSH 서버에 연결하는 방법

umask에 대한 단기 변경 사항

다른 umask 값에 대한 단기 요구 사항이 있는 경우 umask 명령을 사용하여 현재 세션에 대해 변경할 수 있습니다. 아마도 디렉토리 트리와 일부 파일을 만들고 보안을 강화하려고 할 것입니다.

umask 값을 077로 설정한 다음 새 값이 활성화되었는지 확인할 수 있습니다.

 유마스크 077
 유마스크 

임시 umask 값 설정

그룹 및 기타 범주에서 마스크 값을 7로 설정하면 해당 범주에서 모든 권한이 제거됩니다. 당신(그리고 루트) 외에는 아무도 새 디렉토리에 들어가 파일을 읽고 편집할 수 없습니다.

 mkdir 보안 디렉토리
 ls -ld 보안 디렉토리 

임시 umask 값을 사용하여 세션에서 새 디렉토리 생성

디렉토리 소유자에게만 권한이 있습니다.

 mkdir 보안 파일.txt
 ls -ld 보안 파일.txt 

임시 umask 값을 사용하여 세션에서 새 파일 만들기

파일은 다른 사용자의 스누핑에 대해 안전합니다. 터미널 창을 닫으면 임시 umask 설정이 삭제됩니다.

umask가 사용되는 다른 방법

Linux에서는 일부 프로세스가 시스템 umask 값을 상속하거나 고유한 umask 설정이 제공되도록 허용합니다. 예를 들어 useradd 는 umask 설정을 사용하여 새 사용자의 홈 디렉토리를 만듭니다.

umask 값은 파일 시스템에도 적용할 수 있습니다.

 적은 /etc/fstab 

덜 사용하여 /etc/fstab 파일 보기

이 컴퓨터에서 "/boot/efi" 파일 시스템에는 077의 umask 설정이 적용되어 있습니다.

/etc/fstab 파일의 umask 설정

ls 로 파일 시스템 마운트 지점을 보면 umask 값이 소유자인 루트를 제외한 모든 사람의 모든 권한을 제거했음을 확인할 수 있습니다.

 ls /boot/efi -ld 

ls를 사용하여 "/boot./efi" 파일 시스템 마운트 지점에 대한 권한 보기

umask와 권한은 서로 필요합니다.

기본 권한은 umask 값으로 변환된 디렉토리 또는 파일에 적용됩니다. 사용자에 대해 umask 값을 영구적으로 변경해야 하는 경우는 매우 드뭅니다. 그러나 민감한 디렉토리 또는 문서 모음을 생성하는 동안 더 엄격한 권한 집합을 제공하도록 일시적으로 umask 값을 설정하는 것은 사용자의 권한을 강화하는 빠르고 쉬운 방법입니다. 보안.

관련: UFW 방화벽으로 Linux 서버를 보호하는 방법