Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 部署具有root权限的应用程序_Objective C_Cocoa_Macos_Permissions_Libpcap - Fatal编程技术网

Objective c 部署具有root权限的应用程序

Objective c 部署具有root权限的应用程序,objective-c,cocoa,macos,permissions,libpcap,Objective C,Cocoa,Macos,Permissions,Libpcap,我已经编写了一个Cocoa应用程序,它使用libpcap监控网络流量。由于libpcap需要根权限,我想知道授予它根权限的最佳方式是什么(例如,使用Package Maker?)。我是否能够使用拖放安装程序部署它,或者PackageMaker是我唯一的选择 此外,我想知道授予我的应用程序根权限所带来的安全风险。该应用程序还写入磁盘(sqlite数据库),我了解到,给一个写入磁盘根权限的应用程序不是一个好主意 苹果推荐的方法如下: 将需要特权操作的内容分解成一个单独的可执行文件(这就是为您使用l

我已经编写了一个Cocoa应用程序,它使用libpcap监控网络流量。由于libpcap需要根权限,我想知道授予它根权限的最佳方式是什么(例如,使用Package Maker?)。我是否能够使用拖放安装程序部署它,或者PackageMaker是我唯一的选择


此外,我想知道授予我的应用程序根权限所带来的安全风险。该应用程序还写入磁盘(sqlite数据库),我了解到,给一个写入磁盘根权限的应用程序不是一个好主意

苹果推荐的方法如下:

  • 将需要特权操作的内容分解成一个单独的可执行文件(这就是为您使用libpcap的内容)
  • 当应用程序需要启动特权exe时,它会创建一个授权引用并检查用户是否可以授权(称为预授权),并将授权的外部引用传递给特权exe
  • 当它第一次启动时,特权exe在尝试执行特权操作之前再次获得授权
要使上述功能正常工作,必须将特权exe安装为root所有,并设置setuid位。您可以使用package maker来实现这一点,也可以创建苹果公司所称的软件包。这是一个检查它是否以root身份运行的工具,如果不是,则通过调用自身来修复其setuid位和所有权。然后,它对操作进行授权并执行操作

如果使用自修复工具,则可以将其与应用程序捆绑在一起,并使用拖放安装过程


我强烈建议你阅读整本书。它更详细地讨论了所有这些内容,并包括一些示例代码。

很有趣。安全扫描应用程序?也许你可以将其分为两个可执行文件,一个setuid(或在OSX上执行的任何操作),它只不过是获取数据包并以某种方式使其可用(管道、套接字等),另一个以正常用户权限运行,执行其他所有操作,包括写入文件。谢谢,这很有帮助。