2011-08-24 3 views
0

"/ Library/Preferences /"Mac 디렉토리 아래에 파일을 만들어야합니다. 그러나 Lion에서는 루트 사용자 만이이 dir에 쓰기 권한을 갖습니다.루트 사용자로 C 프로그램을 프로그램 적으로 실행

#include <stdio.h> 

int main() 
{ 
    FILE *fileHandle = NULL; 
    fileHandle = fopen("/Library/Preferences/v.test", "w"); 
    fclose(fileHandle); 

    return 0; 
} 

이 코드는 sudo ./a.out으로 실행하면이 코드 줄이 작동합니다. 나는 프로그래밍 방식으로 동일한 작업을 수행하려고합니다.

감사합니다.

+2

그렇게 할 수 있다면 누구나 보안을 깨뜨릴 수 있습니까? –

+0

왜 이것을해야합니까? 각 사용자를 실행할 때 환경 설정을하지 않는 이유는 무엇입니까? 관리자 권한이 필요하지 않습니다. – Mark

+0

프로그램이 입력에서 루트 암호를 읽는 경우 가능합니다. 하지만이 방법과'sudo./a.out'에는 아무런 차이가 없습니다. – Stan

답변

1

나는 이것을 달성 할 방법이 없다고 생각합니다. (즉, 실행하기 전에 프로그램에 몇 가지 특별한 권한을 수동으로 부여하지 않아도됩니다.) 그리고 그렇지 않은 것이 좋습니다. 그러한 방법이 주요 OS 보안 취약점 일 수 있습니다. 루트 권한을 가진 프로그램을 작성할 수 있다면 모든 맬웨어 제작자도 마찬가지입니다 ...

3

실행 파일을 setuid로 설정할 수 있습니까? chownrootchmod u+s으로 변경하십시오.

+0

그리고 무슨 권한이 필요합니까 ??? – duedl0r

+0

'루트 '. 그건 분명하다. 그러나 그것은 "한 번만 (do once)"행동이며 계속해서 수행해야 할 필요는 없습니다. – glglgl

1

C에서 setuid(0)으로 전화하여 사용자 ID를 root로 변경할 수 있습니다. 허용이 setuid로이 프로그램은 루트가 소유하고 설정해야합니다 같은 특권 작업이 완료 될 때

chown root:root a.out 
chmod u+s a.out 
0

루트로 로그인하고 프로그램을 실행하도록 요청.

0

쉬운 일은 아니지만 여전히 수행 할 수 있습니다. Apple에서 SMJobBless 예제를 검색하십시오. 일반적으로 root가 소유 한 launchd 인스턴스에서 실행되는 launchd 데몬을 설정합니다.

관련 문제