【问题标题】:Mac installer package - how to run scripts as root or admin? (postflight)Mac 安装程序包 - 如何以 root 或管理员身份运行脚本? (飞行后)
【发布时间】:2012-02-05 01:16:26
【问题描述】:

我创建了 Mac 包来安装我的一些东西。我有应该将一些数据复制到 /Library/Application Support/Apple/Mail/Stationery/Apple/Contents/Resources/Stationery/Contents/Resources/ 的 postflight 脚本 - 并且出于此处提到的原因:How can I build a Mac package on linux? (BOM file problem) it需要是飞行后脚本。

但是它不起作用(它只是下载一个 zip 文件,将其解压缩并 cp 到提到的位置)。所以我通过将 2> 添加到 cp 来检查错误,这就是发生的事情:

cp:/Library/Application Support/Apple/Mail/Stationery/Apple/Contents/Resources/Stationery/Contents/Resources/:权限被拒绝

我已经仔细检查了我的 Info.plist 并且看起来保留了正确的设置:

<key>IFPkgFlagAuthorizationAction</key>
<string>RootAuthorization</string>

但脚本仍然没有权限。我已经尝试过“whoami”,它返回了当前登录的用户。更奇怪的是,安装程序实际上要求管理员身份验证。你们有什么想法我应该怎么做才能让这个脚本以 root/admin/拥有更大权限的人身份运行?

【问题讨论】:

  • 不要轻易放弃!

标签: macos package packagemaker


【解决方案1】:

安装程序显示管理员身份验证警报的事实意味着安装程序已经通过身份验证(大概是将文件安装到仅管理员/根目录的位置)。

如果我没记错的话,在我自己的 Postflight 脚本中,我在脚本中添加了对 sudo 的调用,以执行管理员/root 特权操作。尝试这种方法,看看它是否有效。我不知道这是否是“最佳实践”方法(或者可能是,因为可以签署安装程序)。

【讨论】:

  • 这不仅仅是“最佳实践”,它实际上是唯一的方法。
【解决方案2】:

我认为在 Lion 中是不可能的。Lion 的安装程序从当前用户启动脚本。

【讨论】:

    猜你喜欢
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 2022-01-08
    • 2023-01-24
    • 1970-01-01
    相关资源
    最近更新 更多