我想运行一些包含来自 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
(可能需要更多)。
正如您在评论中所说,由于二进制文件位于只读文件系统上,因此您需要使用该文件的副本。