2009-09-10 5 views
0

Linux, OSX 및 Windows [Vista]에서 특정 보호 파일을 편집하려면 현재 작업중인 응용 프로그램이 필요합니다. 일반적으로 응용 프로그램이 높은 권한으로 무언가를해야 할 때 암호 확인 대화 상자가 나타나 사용자에게 응용 프로그램이 관리자 권한으로 해당 작업을 수행 할 수 있는지 확인하도록 요청합니다.C++ (UAC/gksudo/등)을 사용하여 관리자/루트로 파일 열기/쓰기

Windows Vista는 매니페스트 파일을 사용하고 OSX는 인증 라이브러리 (https://developer.apple.com/mac/library/documentation/Security/Reference/authorization_ref/Reference/reference.html)를 사용하며 Linux에는 다양한 sudo 프론트 엔드가 있습니다.

이 문제를 해결하기 위해 일반적으로 허용되는 교차 플랫폼 방식이 있습니까? 내 응용 프로그램을 루트 사용자로 실행해야하는 것은 원하지 않지만 읽기/쓰기 작업을 위해 보호 된 파일을 열어서 일반 사용자 모드로 다시 되돌리기를 원합니다.

답변

0

Windows Vista의 경우 기본적으로 관리 작업을 수행하기위한 전용 프로세스가 필요합니다. 언급 한대로 관리자가 활성화 된 프로세스에는 요청 된 실행 수준을 지정하는 매니페스트가 필요합니다 (자세한 내용은 MSDN article 참조).

상승하지 않고 "상승"자체를 지원하는 Windows 응용 프로그램을 자세히 살펴보면 관리 권한이 필요하면 실제로 완전히 새로운 프로세스가 열리는 것을 볼 수 있습니다 (예 : UAC가 작동 할 때 작업 관리자로 이동). 모든 사용자의 프로세스 표시 "를 클릭하고 관리자 권한으로 다시 열리는 방법에 유의하십시오.

Windows의 경우 필요한 아키텍처에는 대부분의 작업을 수행하는 표준 프로세스와 관리자 작업을 호출하는 관리자 프로세스가 필요합니다. 두 프로세스는 표준 프로세스를 대신하여 관리 작업을 수행 할 수 있도록 보안 수단 (아마도 secure named pipe)을 통해 통신해야합니다.

이 접근법은 다른 플랫폼에서 일반화 될 수 있으며 특정 유형의 클래스/인터페이스에서 추상화 될 수 있으므로 플랫폼 별 세부 정보가 새어 나올 필요가 없습니다.

+0

이 정보를 제공해 주셔서 감사합니다. – Michael