문제는 항상 가장 일반적인 권한 (기타-> 그룹-> 사용자)으로 시작하여 이러한 권한이 서로 축소되는 것으로 생각했습니다.
이 경우 "기타"권한이 모든 사람에게 적용됩니다.
다시 말해, o = rwx 인 경우 누가 그룹 및 사용자에 대한 권한을 관리합니까?
이전 문장과 다릅니다. 여기에서 userX가 파일을 소유하고 파일을 사용자가 읽을 수 있거나 userX가 속한 그룹이 파일을 소유하고 파일이 그룹 인 경우 userX에 읽기 권한이 있음을 의미합니다. -파일을 읽을 수 있거나 다른 파일을 읽을 수있는 경우 그러나 그것이 작동하는 방식이 아닙니다. 사실, o=rwx
것을 의미 rwx
권한을 다른 사람에게 적용되지만 그것은 다른 사람 아닌 실체에 대해 아무 말도하지 않습니다.
첫째, 사용자가 속한 그룹은 직접적으로 중요하지 않습니다. 커널에는 그룹에 속하는 사용자라는 개념이 없습니다. 커널이 유지 관리하는 것은 모든 프로세스에 대해 사용자 ID ( 유효한 UID ) 및 그룹 ID 목록 (유효한 GID 및 보충 GID)입니다. 그룹은 로그인 프로세스에 의해 로그인시 결정됩니다. 그룹 데이터베이스를 읽는 로그인 프로세스입니다 (예 :) /etc/group
. 사용자 및 그룹 ID는 하위 프로세스 ¹에 의해 상속됩니다.
프로세스가 기존 Unix 권한으로 파일을 열려고 할 때 :
- 파일의 소유 사용자가 프로세스의 유효 UID 인 경우 사용자 권한 비트가 사용됩니다.
- 그렇지 않으면 파일의 소유 그룹이 프로세스의 유효 GID이거나 프로세스의 보조 그룹 ID 중 하나 인 경우 그룹 권한 비트가 사용됩니다.
- 그렇지 않으면 다른 권한 비트가 사용됩니다.
한 세트의 rwx 비트 만 사용됩니다. 사용자가 다른 그룹보다 우선하는 그룹보다 우선합니다. 존재하는 경우 액세스 제어리스트 알고리즘은 상기 일반화 설명했다
- 프로세스의 유효 UID에 대한 파일에 ACL이있는 경우 액세스 권한 부여 여부를 판별하는 데 사용됩니다.
- 그렇지 않으면, 프로세스의 유효 GID 또는 프로세스의 보충 그룹 ID 중 하나에 대한 파일에 ACL이 있으면 그룹 권한 비트가 사용됩니다.
- 그렇지 않으면 다른 권한 비트가 사용됩니다.
마스크의 영향을 포함하여 ACL 항목이 사용되는 방법에 대한 자세한 내용은 사용자가 여러 그룹 에 속하는 경우 ACLS 우선 순위를 참조하십시오 .
따라서 -rw----r-- alice interns
Alice가 읽고 쓸 수 있고 인턴을 제외한 다른 모든 사용자가 읽을 수있는 파일을 나타냅니다. 권한과 소유권 ----rwx--- alice interns
이있는 파일 은 Alice (인턴이든 아니든)를 제외한 인턴 만 액세스 할 수 있습니다. Alice가 전화 chmod
를 걸어 권한을 변경할 수 있으므로 보안이 제공되지 않습니다. 엣지 케이스입니다. ACL이있는 시스템에서 일반화 된 메커니즘을 통해 특정 사용자 또는 특정 그룹에서 권한을 제거 할 수 있습니다.
각 동작 (읽기, 쓰기, 실행)에 대한 모든 비트를 정렬하지 않고 단일 비트 세트를 사용하면 몇 가지 장점이 있습니다.
- ACL이있는 시스템에서 사용자 또는 그룹 세트에서 권한을 제거 할 수있는 유용한 효과가 있습니다. ACL이없는 시스템에서는 한 그룹에서 권한을 제거 할 수 있습니다.
- 구현하는 것이 더 간단합니다. 여러 비트 세트를 결합하지 않고 하나의 비트 세트를 확인하십시오.
- 더 적은 수의 작업이 포함되므로 파일 권한을 분석하는 것이 더 간단합니다.
¹ setuid 또는 setgid 프로세스가 실행될 때 변경 될 수 있습니다 . 이것은 당면한 문제와 관련이 없습니다.