유닉스에서 루트는 권한이 있는 사용자입니까?

유닉스에서 루트는 권한이 있는 사용자입니까?

나는 대답을 어느 정도 알고 있지만, 내가 알고 싶은 것은 구현 세부 사항입니다. 루트가 로그인되어 있고 권한이 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을 살펴보세요. 그들은 지금까지 수십 년 동안 존재해 왔습니다.

관련 정보