[Computer Science]/[소프트웨어 및 시스템보안]

[소프트웨어 및 시스템 보안] Set UID

DevCat_ 2024. 9. 30. 23:25

주제 : Set-UID를 통해서 권한을 이행받을 수 있는 프로그램.

특권 프로그램의 필요성

 비밀번호를 권한이 없는 다른 누군가가 변경 및 읽기 같은 접근을 하지 않기 위해서 리눅스에서는 /etc/shadow 파일에 유저의 비밀번호가 저장된다. 해당 파일은 owner만 읽기 쓰기가 가능하다. 그리고 그 owner는 루트(root)이다.

 

그렇다면 본인이 맞는 일반 유저의 경우에는 어떤 방식으로 해당 파일에 접근하여 비밀번호를 변경할 수 있을까?

 

2단계 접근 방식

접근 관리는 2가지 이다. (접근은 파일 접근, 시스템 메모리 접근 그런 것들을 통틀어서 말한다.)

  1. Fine-grained Access Control by Privileged Program-특권 프로그램을 이용하여 섬세하게 쪼개진 권한 제어
  2. Generic Access Control by OS(시스템 콜이 예시이다.) -일반적인 접근 권한을 OS로 제어.

그런데!

1번 방식의 대상인 많이 쪼개진 권한들도 OS가 하면 안 되나?


안 된다.

 직접 OS에서 접근 권한을 잘게 쪼개(Fine-grained Access)어서 진 것들을 관리하는 것은 OS의 로직을 너무 복잡하게 만드는 것이다.(아무리 OS라도 무거우면 안 된다!)- "OS가 다 해주면 안 될까?" 이 발상은 좋지 않다.

 

그래서 OS는 확장에 의존 접근해서 Fine-grained한 Access를 제어하도록 한다.

 

(여기서 확장에 대한 이해는 OS 확장방법 사이의 관계를 크롬크롬의 확장 프로그램이라고 생각하면 된다.

 

-크롬에서는 자동으로 유튜브의 번역을 해주지 않지만, 확장 프로그램을 이용하면 유튜브 내용을 자동으로 번역해주는 프로그램이 있다. 이런 식으로 보자.)

 

확장의 대표적으로 특권 프로그램(Privileged program)이 있다.

특권 프로그램의 종류 - Types of Privileged Programs

Daemons

 

Set-UID Programs