파일 시스템 권한

File-system permissions

대부분의 파일 시스템에는 사용자가 파일 시스템의 내용을 읽고, 변경하고, 탐색하고, 실행하는 기능을 제어하는 파일 및 디렉토리의 속성이 포함되어 있습니다.경우에 따라서는 사용자의 권한 수준에 따라 메뉴 옵션 또는 기능이 표시되거나 숨겨질 수 있습니다. 이러한 사용자 인터페이스권한 기반이라고 합니다.

기존의 Unix 파일시스템 권한과 보다 구체적인 제어가 가능한 Access-Control List(ACL; 접근컨트롤 리스트)의 2종류의 권한을 폭넓게 이용할 수 있습니다.

파일 시스템의 종류

원래 파일 할당 테이블 파일 시스템에는 파일 단위의 모든 사용자 읽기 전용 속성이 있습니다.

Microsoft Windows NT 및 그 파생 모델에 실장된 NTFS는 ACL을[1] 사용하여 복잡한 권한 세트를 제공합니다.

OpenVMS는 Unix와 유사한 권한 체계를 사용합니다.4가지 카테고리(시스템, 소유자, 그룹 및 월드)와 4가지 유형의 액세스 권한(읽기, 쓰기, 실행 및 삭제)이 있습니다.카테고리는 서로 분리되어 있지 않습니다.월드에는 그룹이 포함되며, 그룹에는 소유자가 포함됩니다.시스템 범주에는 시스템 [2]사용자가 독립적으로 포함됩니다.

Classic Mac OS 운영 체제에 구현된 HFS는 권한을 지원하지 않습니다.

Mac OS X 버전 10.3("Panther") 및 이전 사용 POSIX 호환 권한.버전 10.4("Tiger") 이후 Mac OS X에서는 NFSv4 ACL 사용도 지원합니다.이전 버전의 Mac OS X에서 사용된 "기존 Unix 권한"을 지원하며, Apple Mac OS X Server 버전 10.4+ 파일 서비스 관리 설명서에서는 가능하면 기존 Unix 권한만 사용할 것을 권장합니다.또한 Mac OS Classic의 "Protected" 속성도 지원합니다.

Solaris ACL 지원은 사용하는 파일시스템에 따라 다릅니다.구형 UFS 파일시스템은 POSIX.1e ACL을 지원하지만 ZFS는 NFSv4 [3]ACL만 지원합니다.

Linux는 ext2, ext3, ext4, Btrfs 및 POSIX.1e ACL을 포함한 기타 파일 시스템을 지원합니다.ext3[4] 및 ext4 파일 시스템의 NFSv4 ACL은 실험적으로 지원됩니다.

FreeBSD는 UFS에서는 POSIX.1e ACL을, UFS 및 [5][6]ZFS에서는 NFSv4 ACL을 지원합니다.

IBM z/OS는 RACF(Resource Access Control Facility)[7]를 사용하여 파일 보안을 구현합니다.

아미가OS 파일 시스템, AmigaDOS는 단일 사용자 OS에 대해 비교적 고급 권한 시스템을 지원합니다.AmigaOS 1.x에서는 파일에는 Archive, Read, Write, Execute 및 Delete(ARWED로 통칭) 권한/플래그가 있습니다.AmigaOS 2.x 이후에서는 보류, 스크립트 및 순수 권한/플래그가 추가되었습니다.

기존 Unix 권한

Unix와 유사한 파일 시스템에 대한 권한은 사용자, 그룹기타로 알려진 세 가지 범위 또는 클래스로 관리됩니다.파일이 생성될 때 해당 권한은 해당 파일을 생성한 프로세스의 umask에 의해 제한됩니다.

파일디렉토리는 사용자가 소유합니다.소유자는 파일의 사용자 클래스를 결정합니다.소유자에게 고유한 권한이 적용됩니다.

파일 및 디렉터리는 파일의 그룹 클래스를 정의하는 그룹에 할당됩니다.고유 권한은 파일 그룹의 구성원에게 적용됩니다.소유자는 파일 그룹의 구성원일 수 있습니다.

소유자 또는 그룹의 구성원이 아닌 사용자는 파일의 다른 클래스를 구성합니다.다른 사용자에게는 고유한 권한이 적용됩니다.

유효한 권한은 사용자가 속한 첫 번째 클래스에 따라 사용자, 그룹, 기타 순으로 결정됩니다.예를 들어, 파일 소유자인 사용자는 그룹 클래스 또는 다른 클래스에 할당된 권한에 관계없이 사용자 클래스에 부여된 권한을 가집니다.

권한

Unix와 유사한 시스템은 각 클래스에 적용되는 세 가지 특정 권한을 구현합니다.

  • 읽기 권한은 파일을 읽을 수 있는 권한을 부여합니다.디렉터리에 대해 설정된 경우 이 권한은 디렉터리에 있는 파일 이름을 읽을 수 있는 권한을 부여하지만 내용, 파일 형식, 크기, 소유권, 권한과 같은 파일에 대한 추가 정보를 찾을 수 없습니다.
  • 쓰기 권한은 파일을 수정할 수 있는 권한을 부여합니다.디렉토리에 대해 설정된 경우, 이 권한은 파일 작성, 파일 삭제 및 파일 이름 변경 등 디렉토리의 항목을 수정할 수 있는 권한을 부여합니다.이 경우 실행도 설정되어 있어야 합니다.실행 설정이 없으면 디렉토리에 대한 쓰기 권한은 의미가 없습니다.
  • 실행 권한은 파일을 실행할 수 있는 권한을 부여합니다.운영 체제에서 실행 프로그램을 실행할 수 있도록 하려면 실행 프로그램에 대해 이 권한을 설정해야 합니다.디렉토리에 대해 설정되면 실행 권한은 검색 권한으로 해석됩니다.이 권한은 이름이 알려진 경우 파일 내용 및 메타 정보에 액세스할 수 있는 권한을 부여하지만 read가 설정되지 않은 경우 디렉토리 내에 파일을 나열하지 않습니다.

파일이 아닌 디렉터리에 대한 사용 권한을 설정하면 "가장 자주 잘못 이해되는 [8]파일 사용 권한 문제 중 하나"가 발생합니다.

권한이 설정되어 있지 않으면 해당 권한이 거부됩니다.ACL 기반 시스템과 달리 Unix와 유사한 시스템에 대한 권한은 상속되지 않습니다.디렉토리내에 작성된 파일은, 반드시 그 디렉토리와 같은 권한을 가지는 것은 아닙니다.

setuid, setgid 및 스틱비트를 사용한 권한 동작 변경

Unix와 유사한 시스템은 일반적으로 세 가지 추가 모드를 사용합니다.이것들은 실제로는 어트리뷰트이지만 권한 또는 모드라고 불립니다.이러한 특수 모드는 클래스가 아닌 파일 또는 디렉토리 전체에 대한 것입니다.단, 심볼릭 표기법(아래 참조)에서는 setuid 비트가 사용자에 대해 triad로 설정되고 setgid 비트가 그룹의 triad로 설정되며 스틱비트가 triad로 설정됩니다.

  • 사용자 ID, setuid 또는 SUID 모드 설정.setuid를 가진 파일이 실행되면 결과 프로세스는 소유자 클래스에 지정된 유효한 사용자 ID를 가정합니다.이를 통해 사용자를 일시적으로 루트(또는 다른 사용자)로 취급할 수 있습니다.
  • 설정된 그룹 ID, setgid 또는 SGID 권한.setgid를 가진 파일이 실행되면 결과 프로세스는 그룹 클래스에 지정된 그룹 ID로 간주합니다.디렉토리에 setgid가 적용되면 해당 디렉토리에 작성된 새로운 파일과 디렉토리가 해당 디렉토리에서 그룹을 상속합니다.(기본 동작은 새로운 파일 및 디렉토리 그룹을 설정할 때 유효한 사용자의 프라이머리 그룹을 사용하는 것입니다.단, BSD에서 파생된 시스템에서는 setgid 비트가 항상 all로 설정되어 있는 것처럼 동작합니다.l 디렉토리(Setuid 참조)
  • 스틱 모드(텍스트모드라고도 불립니다).실행 파일에서의 스틱비트의 종래의 동작은, 커널이 종료 후에도 프로세스 이미지를 메모리에 보존하도록 장려하는 것입니다.그러나, 이러한 스틱비트의 사용은, 현재는 소수의 Unix 계열의 operating system(HP-UXUnixWare)에 한정되어 있습니다.디렉토리에서 스틱 권한은 사용자가 디렉토리에 대한 쓰기 권한을 가지고 있더라도 사용자 이외의 사용자가 소유한 파일의 이름 변경, 이동 또는 삭제를 방지합니다.디렉토리 오너와 슈퍼 유저만이 이 대상에서 제외됩니다.

이러한 추가 모드는 각각1비트밖에 점유하지 않기 때문에 setuid 비트, setgid 비트 및 스틱비트라고도 불립니다.

기존 Unix 권한 표기법

기호 표기법

Unix 권한은 심볼 표기법 또는 8진 표기로 표시됩니다.

명령어로 사용되는 가장 일반적인 형식ls -l기호 표기법입니다.

3개의 허가 트라이어드
제1삼합 주인이 할 수 있는 일
제2삼합회 그룹 구성원이 할 수 있는 일
삼합회 다른 사용자가 할 수 있는 작업
각 삼합회
첫 글자 r: 판독 가능
세컨드 캐릭터 w: 쓰기 가능
제삼자 x: 실행 파일
s또는t: setuid/setgid 또는 sticky (실행 파일도 가능)
S또는T: setuid/setgid 또는 스틱(실행 파일 아님)

의 첫 번째 문자lsdisplay는 파일 유형을 나타내며 권한과 관련이 없습니다.나머지 9개의 문자는 3개의 세트로 나누어져 있으며 각각 3개의 문자의 권한 클래스를 나타냅니다.첫 번째 세트는 사용자 클래스를 나타냅니다.두 번째 세트는 그룹 클래스를 나타냅니다.세 번째 세트는 다른 클래스를 나타냅니다.

3개의 문자는 각각 읽기, 쓰기 및 실행 권한을 나타냅니다.

  • r판독이 허용되는 경우,-그렇지 않다면.
  • w기입이 허가되면,-그렇지 않다면.
  • x실행이 허용된 경우-그렇지 않다면.

기호 표기법의 예를 다음에 나타냅니다.

  • -rwxr-xr-x: 사용자 클래스가 전체 권한을 가지고 그룹 및 다른 클래스가 읽기 및 실행 권한만 가진 일반 파일.
  • crw-rw-r--: 사용자 클래스와 그룹 클래스에 읽기 및 쓰기 권한이 있고 다른 클래스에 읽기 권한만 있는 특수 문자 파일.
  • dr-x------: 사용자 클래스에 읽기 및 실행 권한이 있고 그룹 및 다른 클래스에 권한이 없는 디렉터리입니다.

일부 권한 시스템에서는 에 추가 기호가 있습니다.ls -ldisplay는 추가 권한 기능을 나타냅니다.

  • + (+) 접미사는 추가 권한을 제어할 수 있는 액세스 제어 목록을 나타냅니다.
  • . (닷) 접미사는 SELinux 컨텍스트가 있음을 나타냅니다.자세한 내용은 다음 명령을 사용하여 나열할 수 있습니다.ls -Z.
  • @ suffix는 확장 파일 속성이 있음을 나타냅니다.

setuid, setgid sticky 또는 text 속성을 나타내려면 실행 가능한 문자(x또는-)가 변경되었습니다.이러한 속성은 파일 전체에 영향을 줍니다.단, 한 클래스의 사용자뿐만 아니라 setuid Atribut에 의해 사용자의 트라이어드 실행 가능 문자가 변경되고 setgid Atribut에 의해 그룹의 트라이어드 실행 가능 문자가 변경되며 sticky 또는 text Atribut에 의해 트라이어드 실행 가능 문자가 변경됩니다.setuid 또는 setgid Atribute의 경우 첫 번째 또는 두 번째 트리어드에서는x된다s및 그-된다S스틱 속성 또는 텍스트 속성의 경우 세 번째 트라이애드에서는x된다t및 그-된다T다음은 예를 제시하겠습니다.

  • -rwsr-Sr-t: 사용자 클래스에 읽기, 쓰기 및 실행 권한이 있고 그룹 클래스에 읽기 권한이 있으며 다른 클래스에 읽기 및 실행 권한이 있으며 setuid, setgid스틱 속성이 설정된 파일.

숫자 표기법

Unix 권한을 나타내는 또 다른 방법은 에 나타나 있듯이8진수 표기법입니다.stat -c %a이 표기법은 최소 3자리로 구성됩니다.오른쪽 끝의 3자리 숫자는 각각 오너, 그룹 및 기타 권한의 다른 컴포넌트를 나타냅니다(제4자리 숫자가 존재하는 경우 왼쪽 끝(상위) 자리수는 setuid 비트, setgid 비트 및 스틱비트의 3가지 추가 속성을 처리합니다).

이 자리수들은 각각 이진수 시스템의 컴포넌트 비트의 합계입니다.그 결과, 특정 비트가 수치로 표시되는 대로 합계에 추가됩니다.

  • 읽기 비트는 총합에 4를 더합니다(바이너리 100).
  • 쓰기 비트는 총합에 2를 더합니다(바이너리 010).
  • 실행 비트는 합계에 1을 더합니다(바이너리 001).

이러한 값은 애매한 조합을 생성하지 않습니다.각 합계는 특정 권한 세트를 나타냅니다.보다 엄밀히 말하면, 이것은 비트필드의 8진수 표현입니다.각 비트는 다른 권한을 참조하고 있으며, 8진수로 한 번에 3비트를 그룹화하는 것은 이러한 권한을 사용자, 그룹 및 기타 사용자별로 그룹화하는 것에 해당합니다.

다음은 8진 표기로 표시된 기호 표기 섹션의 예입니다.

심볼릭
표기법
숫자
표기법
영어
---------- 0000 권한 없음
-rwx------ 0700 소유자 전용 읽기, 쓰기 및 실행
-rwxrwx--- 0770 소유자 및 그룹의 읽기, 쓰기 및 실행
-rwxrwxrwx 0777 소유자, 그룹 및 기타 읽기, 쓰기 및 실행
---x--x--x 0111 실행하다
--w--w--w- 0222 쓰다
--wx-wx-wx 0333 기입 및 실행
-r--r--r-- 0444 읽어주세요
-r-xr-xr-x 0555 읽기 및 실행
-rw-rw-rw- 0666 읽기 및 쓰기
-rwxr----- 0740 소유자는 읽기, 쓰기 및 실행 가능, 그룹은 읽기만 가능, 다른 소유자는 권한이 없음

사용자 개인 그룹

시스템에 따라서는, 유저 마다 새로운 그룹( 「사용자 전용 그룹」)을 작성하는 것으로, 유저나 그룹의 종래의 POSIX 모델로부터 다른 것이 있습니다.각 사용자가 해당 사용자 개인 그룹의 유일한 멤버라고 가정하면, 이 방식은 002의 umask를 다른 사용자가 일반 디렉토리의 새로 생성된 파일에 쓸 수 없도록 허용하며, 이러한 파일은 작성 사용자의 개인 그룹에 할당되기 때문입니다.단, 파일 공유가 필요한 경우 관리자는 원하는 사용자를 포함하는 그룹을 만들고 새 그룹에 할당된 그룹 쓰기 가능 디렉토리를 만들고 가장 중요한 것은 디렉토리 setgid를 만들 수 있습니다.setgid를 설정하면 디렉토리와 동일한 그룹에 생성된 파일이 할당되고 002 umask(사용자 개인 그룹을 사용하여 활성화됨)는 그룹의 다른 구성원이 이러한 [9][10]파일에 쓸 수 있도록 보장합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "File and Folder Permissions". Microsoft.
  2. ^ "OpenVMS documentation". Archived from the original on 2012-03-05. Retrieved 2009-06-06.
  3. ^ "Oracle Solaris ZFS Administration Guide" (PDF). Sep 2010.
  4. ^ "Archived copy". Archived from the original on 2008-10-12. Retrieved 2010-05-04.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  5. ^ "NFSv4_ACLs – FreeBSD Wiki".
  6. ^ "FreeNAS 9.1.1 Users Guide" (PDF). 2013.
  7. ^ "IBM Knowledge Center".
  8. ^ Hatch, Bri. "Linux File Permission Confusion pt 2", "Hacking Linux Exposed", 2003년 4월 24일 2011년 7월 6일에 액세스.
  9. ^ Epstein, Brian. "The How and Why of User Private Groups in Unix". security.ias.edu. Institute for Advanced Study Network Security. Retrieved 5 August 2014.
  10. ^ "Red Hat Enterprise Linux 7 System Administrator's Guide, 4.3.4 Creating Group Directories". Red Hat Customer Portal. Red Hat.

외부 링크