운영 체제는 권한이없는 프로세스가 권한있는 명령을 실행하는 것을 어떻게 방지합니까?


8

유닉스에서는

게스트 사용자 인 경우 :

chmod 777 /

실패 할 것입니다.

그러나 이것은 어떻게 하드웨어 수준에서 내부적으로 발생합니까?

지금까지 이것이 일어난 일이라고 생각합니다.

  • OS가 해당 명령을 실행하려고합니다.
  • 권한에 대한 정보는 아마도 보조 메모리에있을 것입니다. 따라서 쓰기 명령이 발행됩니다.
  • 2 이전에는 사용자에게 권한이 있는지 확인합니다. 그렇지 않은 경우 오류 메시지 만 표시됩니다.

이것이 어떻게 발생합니까, 아니면 그러한 상황이 발생했을 때 인터럽트가 발생합니까? 권한이없는 명령어에 해당하는 주 메모리의 ISR 테이블에 루틴이 있습니까?

답변:


10

chmodA는 파일 시스템 동작 하지 특권 명령어. 파일 시스템 권한은 하드웨어 수준에서 처리되지 않습니다. 소프트웨어 (특히 OS)는 시스템 호출을 호출하는 프로세스가 파일 시스템 객체 및 권한 오류로 시스템 호출이 반환에 작업을 수행 할 수있는 권한을 가지고 있지 않음을 본다.


5

실제로 두 가지 다른 질문을합니다.

  1. 운영 체제는 권한이없는 프로세스가 권한있는 명령을 실행하는 것을 어떻게 방지합니까?
  2. 권한이없는 프로세스가 호출 할 수없는 이유는 무엇 chmod 777 /입니까?

2에 대한 답변 :

chmod내부적으로 libc에서 함수를 호출합니다 (편의적으로라고도 함 chmod()). 이 함수는 호출자에게 작업에 대한 충분한 권한이 있는지 확인합니다. 그렇지 않은 경우 오류를 반환합니다 EPERM.

1에 대한 답이 더 흥미 롭습니다.

정확한 메커니즘은 OS 및 하드웨어 플랫폼에 따라 다르지만 기본적으로 다음과 같습니다. 모든 최신 프로세서에는 기본 제공 보안 기능이 있습니다. 이를 통해 OS는 프로세서에게 "이 프로그램을 실행하지만 권한있는 명령을 실행하지 못하게하십시오"라고 말할 수 있습니다. 따라서 프로세서 자체는 허용 된 명령에 대한 제한을 시행합니다. 프로그램이 권한있는 명령을 실행하려고하면 프로세서가 제어권을 OS로 다시 전달하여 일반적으로 오작동 프로그램을 종료합니다. 자세한 내용은 https://en.wikipedia.org/wiki/Ring_%28computer_security%29를 참조 하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.