이전에 나에게 발생한 질문: 파일 권한/속성 OS(따라서 커널)가 관련되어 있습니까, 아니면 파일 시스템과 관련되어 있습니까? 두 번째 옵션이 나에게는 더 논리적인 것 같지만 reiserfs
"Unix 파일 권한"과 같은 파일 권한 에 대해서는 들어본 적이 없습니다 . 반면에 인용하면위키피디아 기사:
새로운 버전의 Windows가 출시되면서 Microsoft는NTFS 파일 시스템에서 사용 가능한 속성
이는 Windows 파일 속성이 어떻게든 파일 시스템과 관련되어 있음을 나타내는 것 같습니다.
누군가 나를 깨달을 수 있습니까?
답변1
커널과 파일 시스템이 모두 역할을 합니다. 권한은 파일 시스템에 저장되므로 해당 정보를 파일 시스템 형식으로 저장할 수 있는 장소가 필요합니다. 권한은 커널에 의해 시행되고 애플리케이션에 전달되므로 커널은 파일 시스템에 저장된 정보의 의미를 결정하는 규칙을 구현해야 합니다.
"Unix 파일 권한"을 참조하십시오.전통적인 허가 시스템여기에는 세 가지 역할 유형(사용자, 그룹, 기타)에 의해 제어되는 세 가지 작업(읽기, 쓰기, 실행)이 포함됩니다. 파일 시스템의 역할은 3×3=9비트의 정보를 저장하는 것입니다. 특히 프로세스가 파일에 대해 작업을 시도할 때 커널은 프로세스가 실행 중인 사용자 및 그룹을 기반으로 작업을 허용할지 여부를 결정해야 합니다. 그리고 요청된 작업. ("Unix 파일 권한"에는 종종 다음이 포함됩니다.setuid 및 setgid 비트, 엄밀히 말하면 이는 허가가 아닙니다. )
최신 UNIX 시스템은 다른 형태의 권한을 지원할 수 있습니다. 대부분의 최신 UNIX 시스템(Solaris, Linux, *BSD)에서 지원됩니다.액세스 제어 목록파일당 여러 사용자와 여러 그룹에 읽기/쓰기/실행 권한을 할당할 수 있습니다. 파일 시스템에는 이 추가 정보를 저장할 공간이 있어야 하며 커널에는 이 정보를 찾아 사용하는 코드가 포함되어 있어야 합니다. Ext2, reiserfs, btrfs, zfs 및 대부분의 기타 최신 UNIX 파일 시스템 형식은 이러한 ACL이 저장되는 위치를 정의합니다. 맥 OS X 지원다른 ACL 세트여기에는 "추가" 및 "하위 디렉터리 생성"과 같은 비전통적인 권한이 포함됩니다. HFS+ 파일 시스템 형식은 이를 지원합니다. Linux에서 HFS+ 볼륨을 마운트하는 경우 Linux 커널이 이러한 ACL을 지원하지 않기 때문에 이러한 ACL이 적용되지 않습니다.
반면 일부 운영 체제와 파일 시스템은 액세스 제어를 지원하지 않습니다. 예를 들어,지방그 변형은 읽기/쓰기 및 숨김/표시로 권한이 제한된 단일 사용자 운영 체제 및 이동식 미디어용으로 설계되었습니다. 이는 다음에 의해 시행되는 권한입니다.운영 체제. DOS에서 ext2 파일 시스템을 마운트하는 경우 ext2 권한이 적용되지 않습니다. 반대로 Linux에서 FAT 파일 시스템에 액세스하면 모든 파일에 동일한 권한이 부여됩니다.
Windows의 후속 버전에서는 더 많은 권한 유형에 대한 지원이 추가되었습니다. NTFS 파일 시스템은 이러한 추가 권한을 저장하도록 확장되었습니다. 이전 운영 체제에서 새로운 권한을 사용하여 파일 시스템에 액세스하는 경우 운영 체제는 이러한 새로운 권한을 인식하지 못하므로 이를 적용하지 않습니다. 이와 대조적으로 최신 운영 체제를 사용하여 이전 파일 시스템에 액세스하는 경우에는 새 권한이 포함되지 않으며 운영 체제는 합리적인 폴백을 제공합니다.
답변2
특정 권리를 사용하기 위해둘 다핵심그리고파일 시스템이 이를 지원해야 합니다. 파일 시스템이 가장 기본적인 액세스 권한조차 지원하지 않는 경우 파일 시스템 코드는 이를 가짜로 만들어야 합니다(예: umask
vfat의 마운트 옵션 사용).
답변3
내 이해는 커널이 VFS에서 inode를 구현한다는 것입니다. inode에는 권한 정보(UNIX 및 ACL)와 기타 메타데이터가 포함되어 있으며, 파일 시스템은 inode를 확장하여 기능을 추가할 수 있습니다. 관심이 있다면 Linux VFS를 읽어보세요. 시스템 프로그래머가 아니라면 정말 끔찍한 내용입니다.
답변4
일반적으로 파일 권한과 파일 속성은 다음과 같습니다.저장됨파일 시스템을 입력하세요. [정확한 방법은 해당 파일 시스템(ext3/4, 라이저, NTFS 등...)에 따라 다릅니다.]사용된일반적으로 커널에 의해구현하다무엇.
예를 들어, *nix의 커널(예: sistema)은 파일/디렉토리와 관련된 UID의 의미를 아는 "사물"입니다. 파일 UID는 파일 시스템이 특정 파일과 함께 저장하는 숫자이지만 특정 사용자에 대한 이러한 숫자의 "변환"(및 특정 작업을 수행하거나 수행하지 않는 해당 권한)은 커널에 의해 수행됩니다.