使用 PHP 编写的 Web 脚本与设备进行通信。该设备需要 root 权限。如何以安全的最佳方式做到这一点?
Web 应用程序有两种模式,一种是用户模式,一种是管理员模式。在用户模式下,可以通过一个作为系统运行的后台脚本并检查队列来解决这个问题。然而,在管理模式下,人们可以拥有更多互动谈话与设备一起用于调试目的。在此模式下更直接连接会更好。
文件系统 ext3。
答案1
不要为此使用 PHP(或至少单独使用 PHP)。它可能是目前最有漏洞和最破损的网络脚本语言实现。
将问题分为三个部分:
前端 - 创建网页的 PHP(Python、Ruby、Perl...)代码。
后端 - shell、Perl 脚本、编译的二进制文件,用于访问设备。不要在 下运行它
root
。仅为此任务设置一个单独的帐户,并允许其在必要时访问它。如果chmod
或 还setfacl
不够,并且您使用的是 Linux,请使用通过或capabilities(7)
设置的 Linux 功能(请参阅手册页)。setcap
capsh
前端和后端之间使用的通信协议和手段。理想情况下,它应该尽可能受到限制,基本上允许前端查询后端。根据您的需要,它可以像通过 Unix 套接字或命名管道发送“从设备读取最多 1KB”和“将此 7812B 写入设备”类型的消息一样简单(请参阅 参考资料
mkfifo
)。