2014-04-04 3 views
0

파일 관리자를 작성 했으므로 이제는 sudo이 필요한 파일을 복사하거나 편집하려면 사용자가 비밀번호를 입력 할 수있게하려고합니다. gksudo 또는 sudo으로 프로그램의 새 사본을 시작하고 현재 사본을 숨길 수 있습니다. 그러나 동일한 프로세스에서 그렇게 할 수 있습니까?프로그램 내에서 어떻게 sudo를 할 수 있습니까?

나는 남자들이 geteuid과 다른 기능들에 대해 읽었지만 남자들이 나에게 많은 의미를주지 않기 때문에 나는 약간의 기본적인 이해가 부족하다고 느낀다.

답변

0

루트 전용 항목을 수행하려면 프로세스가 0의 유효 uid로 시작하거나 프로세스가 그러한 euid (CAP_SETUID)를 가장 할 수있는 기능이 있어야합니다.

# ls -l /bin/su 
-rws--x--x 1 root root 36720 Mar 28 2013 /bin/su 

노트 파일 권한 플래그에서의 '

유효 UID는 "이 setuid"플래그라는 특수 파일 시스템 속성을 사용하여 설정합니다.

위의 내용은 모든 사용자가 su 명령을 실행하면 실행 파일의 소유자 (이 경우 root) 대신 실행된다는 것을 의미합니다. 따라서 프로세스는 일반 사용자 ID로 실행되지만 유효 사용자 ID는 root 사용자). 따라서, 그러한 과정은 무엇이든 할 수있을 것입니다 root 수 있습니다.

또 다른 현대적인 접근 방식은 CAP_SETUID과 같은 프로세스 선택 기능을 제공하는 것입니다. 그것들은 setcap/getcap 명령을 사용하여 설정하고 질의 할 수 있으며, 어떤 프로세스가 할 수 있고 할 수 없는지에 대한 세밀한 제어가 가능합니다. 결과가 더 안전한 시스템이 될 지 여부는 공개적인 질문입니다.

https://wiki.archlinux.org/index.php/Using_File_Capabilities_Instead_Of_Setuid

가능한 보안 문제의

깔끔한 개요 :

http://forums.grsecurity.net/viewtopic.php?f=7&t=2522&sid=c6fbcf62fd5d3472562540a7e608ce4e#p10271

관련 문제