2014-02-25 6 views
2

유닉스/리눅스에서 GAIN 루트 액세스를 사용하는 유일한 방법은 setuid-root 파일을 실행하는 것입니다.리눅스, GAIN 루트 액세스에 대한 유일한 방법은 setuid-root 파일을 실행하는 것입니까?

즉, 시스템 호출 setuid(), setgid()은 모두 DROPPING 권한에 관한 것입니까?

제 질문은 악용에 관한 것이 아니라는 점에 유의하십시오.

+0

예, 그렇기 때문에 [setuid] (http://en.wikipedia.org/wiki/Setuid)는 약 –

+0

입니다. 루트 프로세스에서 분기하여 루트 액세스를 얻습니다. 문제는 여러분이 생각할 수있는 프로세스가 이미 프로세스에 제어권을 부여하기 훨씬 전에 (또는 init을 생각하면) 이미 루트 특권을 삭제했거나 이전에 특권을 떨어 뜨린 프로세스 (bash를 생각하는 것)에서 파생되었다는 것입니다. – Damon

+0

GAIN은 비 루트 프로세스가 루트 프로세스가된다는 의미입니다. 루트 프로세스가 다른 루트 프로세스를 생성하는 것은 아닙니다. – SzG

답변

2

사실입니다. 비 루트 프로세스 (setuid가 아닌 프로그램을 실행한다고 가정)가 루트가되도록하는 유일한 방법은 setuid 프로그램을 실행하는 것입니다. 그것이 set-uid 루트 프로그램을 실행하고 있다면, 그 유효한 uid는 root이고 실제 uid는 누구든지 그것을 실행 한 것입니다. 그런 다음 setuid (0)을 사용하여 실제 u를 0으로 만들 수 있습니다.