我目前正試圖從LaunchDaemon以/Applications
作爲特定用戶啓動應用程序。有沒有一種方法可以啓動這個應用程序,而無需賦予程序root權限?我的目標C.從LaunchDaemon以特定用戶身份啓動應用程序
1
A
回答
0
我現在用一種古怪的方式解決了這個問題。我使用NSTask
連同sudo
和open
。也許有人需要這個在將來:
+ (bool)start_app_bundle_as_user:(NSString *)path with_user_name:(NSString *)user_name
{
NSString *cmd = [NSString stringWithFormat:@"/usr/bin/sudo -i -u %@ -- open -a %@", user_name, path];
NSTask *task = [[NSTask alloc] init];
NSArray *args = [NSArray arrayWithObjects:@"-c", cmd, nil];
[task setLaunchPath:@"/bin/sh"];
[task setArguments:args];
[task launch];
[task waitUntilExit];
return [task terminationStatus] == 0;
}
0
在你啓動守護進程的plist中,這應該都在/ Library/LaunchDaemons寫的守護進程,您可以設置UserName
鍵:
<key>UserName</key>
<string>userForThisProcess</string>
其中userForThisProcess
是要用戶用於運行應用程序。
相關問題
- 1. 如何以不同用戶的身份啓動應用程序?
- 2. 以模擬用戶身份啓動應用程序
- 3. 以特定應用程序用戶的身份訪問GDrive
- 4. 以特定用戶身份運行Web應用程序
- 5. 以特定用戶身份從PHP運行命令行應用程序
- 6. 無法以特定用戶身份啓動服務?
- 7. 在Mac OS X上以另一用戶身份啓動程序
- 8. VB.NET服務以用戶身份重新啓動程序
- 9. 以另一個管理員身份啓動應用程序
- 10. 以root身份運行時以用戶身份啓動外部進程
- 11. 在MySQL中以特定用戶身份進行身份驗證
- 12. 以普通用戶身份執行程序(以root身份)
- 13. 以root用戶身份從linux bash重新啓動apache2
- 14. 如何以不同用戶身份啓動流程?
- 15. 在ASP.NET中以不同用戶身份啓動進程
- 16. 將項目添加到啓動腳本,並以特定用戶身份運行?
- 17. ASP.NET 5身份3用戶在應用程序重新啓動後退出
- 18. 從根帳戶啓動應用程序
- 19. PSExec如何以SYSTEM用戶身份運行應用程序?
- 20. 以Shell用戶身份運行Android應用程序
- 21. 以不同的用戶身份運行應用程序
- 22. 以API中的用戶身份驗證應用程序
- 23. Setuid for iphone應用程序以根用戶身份運行
- 24. X11:以另一個用戶身份運行gnome應用程序
- 25. LocalSystem Service如何以用戶身份運行應用程序[C#]?
- 26. 在Docker中以非root用戶身份運行應用程序
- 27. 如何以特定用戶身份運行Ruby守護進程?
- 28. 以root用戶以外的其他用戶身份運行Linux應用程序
- 29. 如何讓Azure Web角色應用程序池從一開始就以正確的用戶身份啓動?
- 30. 使Mac OSX launchctl在啓動時以root用戶身份啓動進程
我想你誤解了我:我想從一個根進程作爲特定用戶啓動一個進程。我通過將NSTask與sudo結合使用來解決此問題。 – Nidhoegger
然後也許[這會幫助](https://stackoverflow.com/questions/15474249/launching-a-user-context-application-by-root-daemon-on-demand)。 – TheDarkKnight