나는 대답을 어느 정도 알고 있지만, 내가 알고 싶은 것은 구현 세부 사항입니다. 루트가 로그인되어 있고 권한이 000인 파일이 있다고 가정해 보겠습니다. 그런 다음 루트는 파일에 쓰고 읽을 수 있습니다. 하지만 내 질문은 이것이 어떻게 달성되는지입니다. 일반적인 규칙(소유자, 그룹, 기타, rwx)을 따르나요, 아니면 시스템이 사용자를 보고 루트이므로 모든 파일에 대해 읽기, 쓰기, 실행 권한이 있다고 말합니까?
제가 이 질문을 드리는 이유는 유닉스에서 파일과 사용자를 흉내내는 Rest-API 애플리케이션을 작성하고 있기 때문입니다(예: /galois/home/gauss의 URL은 유닉스 디렉토리로 취급되지만, 예를 들어 /galois/home/gauss/ iris URL은 유닉스 디렉토리로 취급됩니다. pfa는 unix에서 (실행 가능한) 파일로 간주됩니다. 자세한 내용은 여기의 추가 정보를 참조하세요.https://github.com/orgesleka/unix-acl-sql). 이제 제 질문은 루트에 권한이 있다는 것을 일반적인 Unix ACL에서 추론할 수 있습니까, 아니면 이것을 "하드 코딩"해야 합니까?입니다.
답변1
ACL 메커니즘을 사용하여 이를 추론할 수는 없습니다. 바이패스를 코딩해야 합니다.
일부 운영 체제 커널 코드 기반에서는 다음을 찾을 수 있습니다.
if(수사용자())아니면 어디에서나 비슷한 테스트가 있습니다. (OpenBSD의 예) 해당 프로세스의 유효 사용자 ID가 0인지 테스트하는 함수이다.
다른 운영 체제 커널 코드 베이스에서는 비트 플래그 세트에 대한 검사로 대체된 것을 볼 수 있습니다.특권자격 증명 집합이 소유합니다. (FreeBSD의 예) 그러나 동일한 고려 사항이 적용됩니다. 권한이 있는 경우 액세스 검사가 우회되며 명시적인 우회는 코딩되어야 합니다.
두 모델 모두 특히 WWW 지향 코드를 복사하기 위해 복사할 의도는 없습니다. 이 두 가지 아이디어(단일 고유한 매직 사용자 ID 아이디어와 사용자 계정이 가질 수 있는 매직 토큰 아이디어)를 디자인과 코드에서 유지하는 것이 가장 좋습니다.
마찬가지로, 3자리 권위 모델은 복사할 가치가 있는 모델이 아닙니다. 플래그가 기존 3비트 모델처럼 이중 임무를 수행하지 않는 NFS 스타일 ACL을 살펴보세요. 그들은 지금까지 수십 년 동안 존재해 왔습니다.