exel()在perl中作为root

时间:2015-12-11 00:43:30

标签: perl opencv live555

我正在尝试通过perl中的exec()执行命令。它运行但没有与在脚本之外作为sudoer运行它的结果相同。我想知道如何在脚本中首先运行与sudo相同的命令来进行一些测试。出于安全原因,我不想将程序打开作为sudo运行。运行的程序称为openRTSP,它通过TCP进行RTSP连接。我猜测我的perl用户不允许访问openRTSP需要的文件,但我没有成功找到文件。

提前致谢。

1 个答案:

答案 0 :(得分:0)

实际上有两种可能的解释:

  • 您的脚本没有使用与sudo执行相同的环境变量运行。也许在shell配置文件中,您有一个特定的PATH或其他变量集,从脚本运行时没有设置。

  • 您实际上没有权限。在那种情况下,它很难。您不希望为perl脚本或(甚至更糟)perl解释器设置setuid权限。您可以尝试做的是拥有一个新用户组(或者可能是新用户),它可以完全访问和控制您需要的文件,我只是指您需要的文件并以该用户身份运行脚本。除此之外,你可以尝试使用一个小的C或C ++包装器,但我猜这需要更长的时间。

另外,see this question了解更多信息。