如何从 apache 在 dd-wrt ​​中以 root 身份运行 cgi

如何从 apache 在 dd-wrt ​​中以 root 身份运行 cgi

我想运行一些包含来自 Apache 的 iptables 规则的脚本(在 dd-wrt ​​上的端口 81 上运行)。我似乎无法让这些工作,因为我缺乏权限。我希望有人能指出我错过的一些不需要重新编译 Apache 的东西。

我正在运行 dd-wrt ​​v3.0-r33525M kongac (10/16/17)。我正在端口 81 上运行 Apache 实例。

我无法以 root 身份运行 Apache,因为似乎有编译指令/默认值阻止了这种行为。

我无法运行脚本 SUID(好吧,我可以,但 SUID 位被忽略,因为它们是脚本)。

我可能是错的,但 Busybox 的版本似乎没有 sudo 功能。

我可以从在端口 80 上运行的 GUI 中运行该脚本,但我真的很想构建自己的简单界面,而不是让更多人访问此界面并必须运行命令而不是仅单击链接。

我希望我可以用 cron 做一些事情,但是我希望这将需要 cron 轮询文件,从而导致我真正想避免的延迟。同样,我假设我可以 ssh 到本地主机并以这种方式升级我的权限,但这看起来不安全并且需要大量工作。

答案1

由于您的系统受到限制,因此简单地创建二进制 setuid 根可能不会产生多少安全隐患iptables。我不知道dd-wrt,但 Linux 等效的情况是,以 root 身份:

chmod u+s /sbin/iptables

假设该文件属于 root。如果系统支持功能,更安全的选择可能是设置所需的功能:

setcap CAP_NET_ADMIN,CAP_NET_RAW+ep /sbin/iptables

(可能需要更多)。

正如您在评论中所说,由于二进制文件位于只读文件系统上,因此您需要使用该文件的副本。

相关内容