如何解决从Swift代码以root身份执行终端命令
以下代码允许我创建ui并在没有root许可的情况下运行terminal命令。 我的目标是从我的swift代码运行shutdown命令,该命令必须具有root权限。 有人可以帮我解决这个问题吗?
//
// ContentView.swift
// Created by laughinggg on 8/27/20.
// Copyright © 2020 laughinggg. All rights reserved.
//
import SwiftUI
struct windowSize {
let minWidth : CGFloat = 500
let minHeight : CGFloat = 200
let maxWidth : CGFloat = 200
let maxHeight : CGFloat = 250
}
struct ContentView: View {
@State var message = "+"
@State var isRunning = false
var body: some View {
VStack {
Text("HELLO World!!!")
.font(.largeTitle)
.padding()
HStack {
TextField("Message",text: $message)
.padding(.leading)
Button(action: {
let exe = URL(fileURLWithPath: "/sbin/shutdown")
self.isRunning = true
try! Process.run(exe,arguments: [self.message],terminationHandler: { _ in self.isRunning = false })
}) {
Text("Say")
}.disabled(isRunning)
.padding(.trailing)
}
}.frame(maxWidth:500,maxHeight: 500)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
解决方法
看看这个项目:https://github.com/sveinbjornt/STPrivilegedTask
有一个名为AuthorizationExecuteWithPrivileges
的函数,早已不推荐使用,但仍然可以使用。
Apple的文档:https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。