Cocoa에서 권한 있는 파일을 읽고 쓰는 데 launchd 데몬이 가장 좋은 경로입니까?

StackOverflow https://stackoverflow.com/questions/1121253

문제

모든 사용자/현재 호스트 기본 설정 파일(기본 설정 유틸리티 참조에 따라 관리자 권한 필요)에 쓸 수 있어야 하고 plist(루트만 쓸 수 있음)를 통해 실행 에이전트를 활성화/비활성화할 수 있어야 하는 애플리케이션이 있습니다.

나는 사용하고있다 SFAuthorizationView 사용자가 이러한 값을 변경하기 전에 관리자로 인증하도록 요구합니다.

저는 이러한 값을 실제로 변경하는 가장 좋은 방법을 결정하려고 노력하고 있습니다.

저렴한 hackish 옵션을 사용하는 것 같습니다 AuthorizationExecuteWithPrivileges() 그리고 mv 또는 defaults, BLAuthentication을 통해 또는 비슷한 것을 직접 만들 수 있습니다.이것의 단점은 내가 실행 중인 명령줄 앱의 반환 값을 얻지 못하고 내가 만난 이상한 버그(예: 특정 상황에서 -60008 오류가 발생함)도 있다는 것입니다.분명히 Apple에서는 이를 강력히 권장하지만 사람들은 실제로 그렇게 하고 어느 정도 성공을 거두는 것 같습니다.

두 번째로 가장 해킹적인 옵션은 suid 비트가 설정된 도우미 앱을 만드는 것입니다. --self-repair 다양한 장소에서 논의된 옵션.이것은 가능해 보이지만 아마도 세 번째 옵션보다 문제가 덜하지는 않을 것 같습니다.

세 번째 옵션은 완전한 기능을 갖춘 앱을 만드는 것입니다. launchd 루트로 실행되고 소켓을 통해 내 애플리케이션과 통신하는 데몬입니다.이것은 일부 plist 파일을 읽고 쓰는 데 약간 과도한 것처럼 보이지만 나중에 다른 용도를 찾을 수도 있으며 내 응용 프로그램의 유일한 데몬이 아니므로 그냥 사용하는 것이 비합리적이지는 않습니다. 다른 것을 추가하십시오.

이거 수정할까 생각중인데 샘플 코드 내 목적을 위해.

내 두 가지 질문은 다음과 같습니다

  1. launchd 데몬 옵션이 이를 위한 최선의 경로인 것 같습니까, 아니면 제가 놓친 훨씬 더 쉬운 경로가 있습니까?

  2. 다른 사람이 비슷한 코드의 기초로 해당 코드를 성공적으로 사용한 적이 있습니까? 그리고 제가 놓친 눈에 띄는 문제가 있는 사람이 있습니까?테스트 앱에서 성공적으로 사용했는데, 이에 대한 여러분의 의견을 듣고 싶습니다.

도움이 되었습니까?

해결책

  1. launchd 확실히 가장 좋고 안전한 방법입니다.도우미를 제자리에 배치하려면 설치 프로그램 패키지가 필요합니다.귀하의 도우미가 귀하가 대상으로 삼으려는 파일을 편집하는 것 외에는 아무것도 할 수 없고 할 수 없는지 확인하십시오.

  2. 코드에 대한 경험은 없지만 BetterAuthorizationSample을 기반으로 하므로 좋은 시작입니다.

다른 팁

또한 openauth 루트 권한이 필요한 파일을 열 수 있는 API입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top