2011-04-24 33 views
5

我想使用BetterAuthorizationSample,而不是所謂的「惡意」的方式使用setuid爲了獲得root權限。如何使用BetterAuthorizationSample? - 可可

當前我正在使用AuthorizationCreate();使用BLAuthentication具有對某些文件進行修改的root訪問權限,但是我對每次啓動應用程序時必須不斷輸入密碼的事實感到有些惱火。

所以我遇到了蘋果的HelperTool的方法,我只是無法弄清楚。

我幾個月來一直在與可可一起工作了幾個月,但這只是我不可及的,但我仍然需要它。我將如何實現此工具來執行簡單的根特權任務?

是否有一種更簡單的方法來使用HelperTool的概念,以便我的用戶只需輸入一次密碼即可永久授予root權限?

+3

只是爲了避免這種情況:[BetterAuthorizationSample](http://developer.apple.com/legacy/mac/library/samplecode/BetterAuthorizationSample/)現在是Legacy文檔庫的一部分。請注意何時詢問此問題。可能有比BetterAuthorizationSample實現的更現代的解決方案。 – 2012-12-11 09:12:27

回答

2

在Mac OS X上執行幫助工具的「現代」方法是將其作爲應用程序的一部分發送,並且use the ServiceManagement framework to deploy it。部署該工具時,用戶只輸入一次密碼。它將它安裝爲launchd作業;從那時起,你使用any launchd on-demand mechanism啓動助手,並讓它爲你工作。

請注意,上面鏈接的博客文章建議您保護助手的後續調用使用Authorization Services升級,以避免任何人都可以使用的任意權限升級。儘管您可以使用AuthorizationRightSet()在策略數據庫中創建應用程序的授權令牌,這似乎對「用戶只能輸入一次密碼」有所影響,因此您可以實際定義用戶是否需要在首次部署時提供密碼。

該帖子的示例代碼爲on GitHub,並且演示了使用ServiceManagement來部署幫助器工具和授權服務以控制對其的訪問。

+2

我以爲我會叮囑你,只是指出,如果你是沙盒主應用程序,這些都不會起作用。 SMJobBless()將失敗。最後我從Quinn那裏聽說,他正在開發一個更新的示例,適用於希望在App Store之外發布沙盒應用程序但仍能夠實現這種功能的開發人員。 – rudy 2012-12-11 21:29:54