2010-08-08 4 views
3

나는 발사 할 때 root로 많은 작업을하는 프로그램을 가지고있다. 그 후에는 다른 사용자에게 전달해야합니다. 어떻게 할 수 있습니까?루트 권한을 포기 하시겠습니까?

궁금한 점이 있다면 프로그램을 다시 실행하지 않고 루트를 다시 확보 할 수 있습니까?

+2

http://stackoverflow.com/questions/3357737/dropping-root-privileges (답변은 대부분 언어와 관련이 없음)를 참조하십시오. – Gilles

답변

3

짧은 대답은 setuid() 기능을 사용하는 것입니다.

루트가 아닌 사용자로 전환 한 후 루트 권한을 다시 획득 할 수 없습니다.

+1

"루트가 아닌 사용자로 전환 한 후 루트 권한을 다시 가져올 수 없습니다." 사실, 이것은 수퍼 유저 priv를 삭제하는 요점입니다. 프로그램의 보안 허점의 영향을 제한하려고합니다. 다시 에스컬레이션 할 수 있다면 프로그램을 타겟으로하는 악용을 시도 할 수 있습니다. – sleske

+0

@sleske : 실제 유효한 UID가 루트가 아니며 구현시 _POSIX_SAVED_IDS를 지원하면 원래의 유효한 UID를 다시 얻을 수 있습니다. – ninjalj

관련 문제