Linux 시스템에서 파일 권한을 담당하는 것은 무엇입니까?

Linux 시스템에서 파일 권한을 담당하는 것은 무엇입니까?

우리 모두 알고 있듯이 대부분의 Linux 시스템에는 일종의 파일 권한이 있습니다. 그러나 그것들을 정의하는 책임은 무엇입니까? 운영 체제, 파일 시스템 또는 다른 것?

먼저 파일 시스템(ext3, NTFS 등)인 것 같아요. 이것이 제안된 것입니다위키피디아 기사, "파일 시스템 권한"과 같은 문구가 사용되기 때문입니다. 그러나 놀랍게도 그 기사에서는 다음과 같은 언급도 했습니다.

Linux 기반 시스템과 모든 버전의 macOS를 포함한 Unix 계열 및 기타 POSIX 호환 시스템에는 개별 파일에 대한 권한을 관리하기 위한 간단한 시스템이 있습니다. 이 문서에서는 "레거시 Unix 권한"이라고 합니다.

이는 권한이 운영 체제(적어도 POSIX 호환 시스템, 그것이 무엇을 의미하든)에 의해 관리됨을 나타냅니다. 이것도 추천파일 권한에 대한 정보 기사.

게다가 이건ACL에 대한 Red Hat 문서우리에게 말해주세요:

Red Hat Enterprise Linux 커널은 ext3 파일 시스템 및 NFS로 내보낸 파일 시스템에 대한 ACL 지원을 제공합니다. Samba를 통해 액세스되는 Ext3 파일 시스템도 ACL을 인식합니다.

이는 파일 권한 유형인 ACL이 어떤 방식으로든 Linux 커널에 정의되어 있음을 나타냅니다.

나는 이것에 대해 혼란스러워합니다.

답변1

간단히:

전통적인 권한부터 시작해 보겠습니다. 유사한 후속 파일 시스템 ext2과 원본 Unix 파일 시스템에는 inode라는 구조가 있습니다. 이는 많은 바이트로 구성되며 위치, 크기 등과 같은 파일의 속성을 설명합니다. 권한을 나타내는 바이트에는 소유자, 그룹 및 기타 사용자의 권한에 해당하는 비트 세트가 있습니다. 세계. ls -l가장 낮은 비트가 rwxr-xr-x보는 것과 직접적으로 일치하는 곳 에서 이를 볼 수 있습니다 (따라서 이것이 비트 패턴이 됩니다 111101101). chmod이 이진수를 8진수로 사용하는 것과 같은 명령에서도 이를 볼 수 있습니다 (따라서 3비트의 각 그룹은 단일 숫자에 해당합니다).

권한 바이트는 커널의 파일 시스템 드라이버에 의해 해석됩니다(기본적으로 커널은 inode 데이터 구조와 일치하는 일부 C 데이터 구조를 사용합니다).

따라서 이런 의미에서 "권한은 커널에 의해 관리된다"고 "권한은 파일 시스템에 저장된다"고 말할 수 있습니다.

ACL은 더 유연하고 더 어려운 표현과 더 어려운 커널 API를 사용한다는 점을 제외하면 유사하게 작동합니다.

관련 정보