gpt4 book ai didi

macos - 如何以普通用户身份而不是 root 身份访问 "do shell script with administrator privileges"?

转载 作者:行者123 更新时间:2023-12-04 16:18:01 25 4
gpt4 key购买 nike

我正在运行一个通过终端运行 shell 脚本的 applscript。

我希望能够使用“以管理员权限执行 shell 脚本”,但终端以 root 身份运行我的脚本,而不是以普通用户(即管理员)身份运行。

我不想以 root 身份运行的原因(除了明显的原因)是我使用 ~ 符号,这样任何用户都可以登录并在本地运行脚本(例如,我将日志文件直接写入用户的桌面) .

我不想以 root 身份运行的另一个原因是,我在 shell 脚本中使用了 ViseX 安装程序,但该安装程序不能以 root 身份运行良好。

这是我使用的applescript(感谢regulus6633提供的applescript):

set theFile to "myscriptname.sh"

-- launch the application with admin privileges and get the pid of it
set thePID to (do shell script "/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal > /dev/null 2>&1 & echo $!" with administrator privileges) as integer

-- get the bundle identifier of that pid so we can do something with the application
delay 0.2
tell application "System Events"
set theProcess to first process whose unix id is thePID
set bi to bundle identifier of theProcess
end tell

-- runs the Terminal with the shellscript
set theFileAlias to (POSIX file theFile) as alias
tell application id bi
activate
open theFileAlias
end tell

最佳答案

我找到了下一步取得成功的方法:

do shell script "sudo -H -u virtustilus /bin/bash -c \"/bin/bash -c '. ~/.bash_profile; /Users/vis/my_big_script.sh > /Users/vis/someLog.log 2>&1'\"" with administrator privileges

这里发生了什么:

  • 使用“root”用户(管理员权限)启动 shell 脚本。
  • 将用户更改为“virtustilus”(我的主用户)并更改主目录(标志 -H)。
  • 加载。 ~/.bash_profile 环境变量(如 PATH)。
  • 启动脚本 my_big_script.sh,并将所有输出重定向到文件 someLog.log。

它有效(我现在在自动化应用程序中使用它)。

关于macos - 如何以普通用户身份而不是 root 身份访问 "do shell script with administrator privileges"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4791411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com