小编Mar*_*ver的帖子

在 Apache 服务器上通过 cgi 启动根级进程的最安全方法是什么?

问题:我有一个脚本,它以 root 身份通过 cron 作业定期运行,但我想给人们一种通过网页异步启动它的方法。(将编写脚本以确保它不会运行重叠实例等。)

我不需要用户登录或拥有帐户,他们只需单击一个按钮,如果脚本准备好运行,它就会运行。用户可以为脚本选择参数(作为输入进行了大量过滤),但为简单起见,我们会说他们只有选择按下的按钮。

作为一个简单的测试,我在 cgi-bin 中创建了一个 Python 脚本。chown-ing 到 root:root 然后对它应用 "chmod ug+" 没有得到预期的结果:它仍然认为它具有网络服务器帐户的有效组......据我所知,这不是允许。

我读到用编译的 cgi 程序包装它可以完成这项工作,所以我创建了一个 C 包装器来调用我的脚本(它的权限恢复到正常)并给可执行文件根权限和 setuid 位。行得通……脚本运行起来就像 root 运行它一样。

我的主要问题是,这是否正常(需要二进制包装器来完成工作),这是安全的方法吗?它不是面向世界的,但我仍然想学习最佳实践。

更广泛地说,我经常想知道为什么编译后的二进制文件在实践中比脚本更“可信”?我认为你会信任一个人类可读的文件,而不是一个神秘的二进制文件。如果攻击者可以编辑文件,那么您就已经有麻烦了,如果是您无法轻松检查的文件,则更是如此。简而言之,我希望它在此基础上反过来。你的意见?

python root setuid cgi apache-2.2

3
推荐指数
1
解决办法
4087
查看次数

标签 统计

apache-2.2 ×1

cgi ×1

python ×1

root ×1

setuid ×1