我已經寫了一個在Mac(山獅子)取景器插件,它完美的作品,但我必須與sudo運行捆綁。然後我做一個軟件包(Packagemaker)來運行這個軟件包,它失敗了(正確安裝,如果我通過點擊桌面圖標運行它失敗,如果通過命令行使用sudo運行它,它會工作)。 有沒有人知道如何解決這個問題就像安裝dropbox(然後同步圖標顯示)如何mach_inject沒有sudo
0
A
回答
3
你面臨的問題是,在內部,mach_inject調用函數task_for_pid。
該函數返回內核任務ID爲給定的進程PID,並且由於安全方面的原因,蘋果現在需要使用此功能只能採取從那些要麼根或procmod組中的用戶。這解釋了爲什麼運行sudo適合你。
如果你只是發展這個只是自己使用,最簡單的方法是將自己添加到procmod組。但是,如果要分發應用程序,則需要確保任何安裝程序安裝程序以作爲root或procmod組的成員運行。
一種可能是您的應用程序分爲兩個部分,其中第二個註冊到使用SMJobBless提升的權限運行。如果你不用Objective-C編程,不要擔心,因爲SMJobBless的實際部分只需要C函數調用;尋找AuthorizationCopyRights和SMJobBless在given example code。
或者,如果應用程序代碼簽名,應該工作過,但它不是我嘗試過自己。你可以read about that here。
隨着OS X 10.11(酋長)的,task_for_pid
是有資格的函數調用,只有其證書在特定權限提供給軟件,並且不再提供給第三方開發者。
這打破mach_inject,使其難以檢索另一個進程的馬赫任務,而SIP(System Integrity Projection)已啓用。
相關問題
- 1. 沒有sudo訪問
- 2. 卸載沒有sudo
- 3. mach_inject kick start
- 4. 有沒有人在Snow Leopard中成功使用mach_inject for Finder?
- 5. 有沒有辦法在mach_inject之後卸載bundle
- 6. 沒有sudo安裝numpy
- 7. 使用RVM到沒有sudo
- 8. 沒有sudo安裝seaborn
- 9. 運行的WebPack沒有sudo
- 10. 開始Glassfish沒有Sudo
- 11. 安裝h5py沒有sudo
- 12. 沒有sudo執行mysql
- 13. 運行maven作爲sudo和沒有sudo是否有區別?
- 14. 如何在沒有sudo的情況下運行pip(對於mac)?它不工作沒有sudo
- 15. 沒有任何與python相關的工作沒有sudo
- 16. 命令沒有sudo工程,但需要sudo
- 17. 提升使用權mach_inject
- 18. 如何在沒有sudo的情況下構建庫?
- 19. 如何在沒有sudo的情況下安裝gems
- 20. 如何在沒有sudo的情況下運行命令?
- 21. 如何在沒有sudo的情況下永久運行Ec2
- 22. 如何在沒有sudo權限的情況下訪問硬盤?
- 23. 如何在沒有'newgrp'的情況下'sudo'
- 24. 如何從java程序運行沒有密碼的sudo命令?
- 25. `別名sudo =「sudo」`如何工作?
- 26. 沒有sudo安裝Cordova和Ionic
- 27. sudo apt-get update沒有連接到源
- 28. 流星不會沒有Sudo運行?
- 29. 沒有使用粘貼位sudo安裝?
- 30. 連接到MySQL服務器沒有sudo
我已經檢查的Dropbox,盒和谷歌驅動器,我發現盒子可能使用你所提到的(分成兩個部分),我想這一點,但我仍然不知道Dropbox和谷歌驅動器如何解決此工作的方法?你可以告訴這兩個也使用mach_inject,儘管代碼逆向工程。但似乎他們不使用任何提升的特權技能? – Jet
我已驗證您提到的方法(將應用程序分爲兩部分)。有用。謝謝。 – Jet