OS X:始终以root权限运行应用程序

时间:2014-11-18 09:28:05

标签: objective-c macos cocoa

我目前正在开发一个需要多个操作的root权限的应用程序(例如删除系统日志文件等)。一种解决方案是实现一个特权助手工具,该工具将由launchd自动启动。这样,每次执行此类操作时(或每次需要安装帮助程序时),用户都必须输入管理员密码。

现在我想知道是否可以创建一个安装程序包,它将以root权限安装应用程序,这样用户只需输入一次管理员凭据(在安装过程中),每次启动应用程序时都会启动它具有root权限(不提示管理员凭据)。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

在Unix系统上执行此操作的常用方法是使用setuid。基本上,您将程序的所有者更改为root,并在执行时设置"设置用户或组ID"位(s):

$ chown root:root myprogram
$ chmod u+s myprogram

每当用户执行您的程序时,它将以root身份运行。

但请注意,提示管理员凭据的理由非常充分。 使用这种机制(或者通常做你正在尝试做的事情)很容易导致非常危险的安全漏洞,例如权限提升。您使用setuid的任何可执行文件都应该由熟悉该过程的人员进行全面审核,否则攻击者 root用于安装程序的所有计算机。