我想创建一个类似于 dsl 路由器的界面,您可以在其中编辑浏览器中的网络设置并使用新设置重新启动路由器。我想在浏览器中编辑一些设置并通过按钮或类似的东西运行 systemd 服务。例如,我想将 html 表单提交给 python CGI 脚本,然后该脚本将修改 eth1.network 文件并重新启动 networkd 服务。我有一个嵌入式 Linux 设备,上面运行着 Apache web 服务器。
问题是:Apache Web 用户无权启动/停止系统服务,当然我也不想允许 www-data 启动/停止 systemd 服务。
如何在不授予 www-data 用户 root 权限的情况下从浏览器启动/停止 systemd 服务。我知道出于安全原因,Web 服务器永远不应被允许访问根文件夹“var/www/”之外的服务或任何内容。
DSL 路由器如何实现这一点?我在这里找到了一个解决方案允许 www-data 执行特权命令是否安全但我不知道如何实现。如果能提供任何指南或示例,我将不胜感激。
答案1
不要允许运行特权命令,并将其暴露给野外互联网www-data
用户。这是一种自找麻烦的方式。
您可以使用URL 敲击这类事情。您可以创建秘密 URL,并在服务器上持续监控 apache 日志文件的变化,这样tail -f
就不会加载服务器,因为它使用了内核的通知功能。这样,当您调用秘密 URL 时,在特权帐户下运行的脚本(无论是 shell、python 还是其他)将运行单个特定任务。所以,基本上它有点像工业控制计算机在没有特权的用户和需要以最高权限(root?)执行的操作之间进行区分。您应该实施某种身份验证机制来保护该秘密 URL,以避免 DDoS。此外,如果您使用 HTTPS 进行此类操作,那么您的秘密 URL 就不会暴露给中间人。