macOS 另类的 Privilege Task 实现
所谓 Privilege Tasks 其实就相当于命令行执行
sudo。
0x01 传统实现
Authorization Services
Access restricted areas of the operating system, and control access to particular features of your macOS app.
STPrivilegedTask
An NSTask-like wrapper class around AuthorizationExecuteWithPrivileges() in the macOS Security API to run shell commands with root privileges.
0x02 另类实现
可以通过 Apple Script:
do shell script "some awesome script here" with administrator privileges
Example:
import Foundation
var error: NSDictionary?
let source = "do shell script \"sudo echo 'Hello?'\" with administrator privileges"
NSAppleScript(source: source)?.executeAndReturnError(&error)
if let error = error {
print(String(describing: error))
} else {
print("Done!")
}
简单快捷有效,适合不需要 Authorization Ref 持久化的场景,否则还是用 Authorization Services 方案吧!