perl 中的 exec() 作为 root
exec() in perl as root
我正在尝试通过 perl 中的 exec() 执行命令。它 运行s 但与 运行 将其作为 sudoer 在脚本外使用的结果不同。我想知道我如何 运行 与脚本中的 sudo 相同的命令首先进行一些测试。出于安全原因,我不想让程序以 sudo 打开 运行ning。程序 Im 运行ning 称为 openRTSP,它通过 TCP 建立 RTSP 连接。我猜我的 perl 用户不允许访问 openRTSP 需要的文件,但我没有成功找到这些文件。
提前致谢。
实际上有两种可能的解释:
你的脚本不是运行跟sudo执行一样的环境变量。也许在 shell 配置文件中你有一个特定的 PATH 或其他变量集,当 运行 从脚本中设置它时没有设置。
您确实没有权限。在那种情况下,它是艰难的。您不想为您的 perl 脚本或(更糟糕的)您的 perl 解释器设置 setuid 权限。你可以尝试做的是拥有一个新的用户组(或者可能是一个新用户),它可以完全访问和控制你需要的文件,我的意思是只有你需要的文件和 运行 作为该用户的脚本.除此之外,您可以尝试使用一个小的 C 或 C++ 包装器,但我想这会花费更长的时间。
此外,see this question 了解更多信息。
我正在尝试通过 perl 中的 exec() 执行命令。它 运行s 但与 运行 将其作为 sudoer 在脚本外使用的结果不同。我想知道我如何 运行 与脚本中的 sudo 相同的命令首先进行一些测试。出于安全原因,我不想让程序以 sudo 打开 运行ning。程序 Im 运行ning 称为 openRTSP,它通过 TCP 建立 RTSP 连接。我猜我的 perl 用户不允许访问 openRTSP 需要的文件,但我没有成功找到这些文件。
提前致谢。
实际上有两种可能的解释:
你的脚本不是运行跟sudo执行一样的环境变量。也许在 shell 配置文件中你有一个特定的 PATH 或其他变量集,当 运行 从脚本中设置它时没有设置。
您确实没有权限。在那种情况下,它是艰难的。您不想为您的 perl 脚本或(更糟糕的)您的 perl 解释器设置 setuid 权限。你可以尝试做的是拥有一个新的用户组(或者可能是一个新用户),它可以完全访问和控制你需要的文件,我的意思是只有你需要的文件和 运行 作为该用户的脚本.除此之外,您可以尝试使用一个小的 C 或 C++ 包装器,但我想这会花费更长的时间。
此外,see this question 了解更多信息。