我有一个脚本,我通过NSTask在Cocoa应用程序中运行。该脚本使用rsync将/ Users文件夹中的所有内容备份到服务器。我遇到的问题是,当您以用户" a"运行程序时该脚本没有权限对属于用户的文件做任何事情" b"所以rsync只备份属于当前用户的文件。
rsync: opendir "/Volumes/Macintosh HD/Users/userB/Applications" failed: Permission denied (13)
我需要做的是以root身份运行脚本,以便它可以备份所有文件而不管所有者。这里的问题是,无法访问管理员帐户的用户将使用此应用程序,因此脚本需要以root用户身份运行而不需要密码,但同时又需要安全。
我发现了一些建议,说使用chown和chmod使它以root身份运行,但显然出于安全原因,它不会在脚本上运行。
答案 0 :(得分:0)
您应该查看"特权助手工具"这些工具一旦安装就可以在使用LaunchD mach服务召唤时以管理员权限运行。它们必须作为LaunchDaemon安装,第一个使用它的人必须使用密码。目前,不允许/聪明地允许NSTask以管理员权限运行。
此处有一篇博文详细介绍了此过程:http://atnan.com/blog/2012/02/29/modern-privileged-helper-tools-using-smjobbless-plus-xpc及其相关的源代码:https://github.com/atnan/SMJobBlessXPC