簡體   English   中英

使用高級助手和SMJobBless獲得根訪問權限

[英]Gaining Root Access w/ Elevated Helper & SMJobBless

我正在做一些需要定期將文件安裝到/ Library中的文件夾中的工作。

我知道過去我可以使用Authenticate方法中的一種,但自10.7起已棄用。

從到目前為止的閱讀中我了解到的是:

我應該創建一個以某種方式通過身份驗證的助手,並讓該助手執行所有正在執行的任務。 我看了一些示例代碼,包括一些涉及XPC和一個稱為Elevator的代碼,但是我有些困惑。

似乎很多事情都與設置某種客戶端/服務器模型有關,但是我不確定這將如何將我的文件實際安裝到正確的目錄中。 大多數示例只是傳遞字符串。

我的問題很簡單:如何在/ Library中以編程方式創建我的文件夾並定期向其中寫入文件,而僅提示用戶一次輸入密碼,而不再提示? 我真的不確定如何解決這個問題,而且似乎沒有太多的文檔。

您是正確的,沒有太多的文檔。 您基本上將編寫另一個應用程序,即助手應用程序,該應用程序將與SMJobBless()一起安裝。 毫不奇怪,這里最棘手的部分是代碼簽名。 對我來說,最不明顯的部分是每個應用程序的信息plist文件中的SMAuthorizedClientsSMPrivilegedExecutables條目取決於您用來簽署該應用程序的身份/證書。 編譯器/鏈接器還有一個技巧,可以將info plist文件編譯到幫助器工具中,該文件將是單個可執行文件,而不是捆綁包。

一旦啟動並運行了助手應用程序,則必須設計一種與之通信的方法,因為這是兩個不同的過程。 XPC是一種選擇,也許是最簡單的選擇。 XPC通常與服務器進程一起使用,但是您在這里使用的只是XPC的通信端。 基本上,它在兩個應用程序之間來回傳遞字典。 為字典創建標准格式。 我將@“ action”,@“ source”和@“ destination”與3個不同的動作值一起使用,分別是@“ filemove”,@“ filecopy”和@“ makedirectory”。 這些是我的助手應用程序可以做的三件事,如有必要,我可以輕松添加更多內容。

助手應用程序將基本上設置XPC連接和事件處理程序的內容,並等待連接和命令。 這些命令將只是一個字典,因此您可以檢查適當的鍵/值並執行任何操作。

如果您需要更多幫助,我可以提供更多詳細信息和代碼,但是這個問題已經9個月了,所以我不想浪費時間為您提供已經確定的詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM