我们有一个内部服务器管理器(类似 Webmin,但更具体),由一堆 C CGI 程序和 CGI Perl 脚本组成,其中一些需要 root 权限(添加系统用户、管理密码、处理邮件队列等)才能执行。
目前,Apache 作为反向代理工作,并将请求传递给另一个在本地主机上监听并以 root 身份运行的 Web 服务器(Xitami)。
所以我的问题是,与以 root 身份运行 Web 服务器(即使它在 127.0.0.1 上)相比,这是否与在绝对需要 root 权限才能执行的特定 cgi 目录/程序/脚本上执行 setuid root 有什么不同?还是两者都同样不安全?在这种情况下,最好的解决方案/做法是什么?
答案1
最好只将需要此类访问权限的 CGI 设置为 root,而不是以 root 身份运行整个 Web 服务器。
更好的方法是使用 SELinux 或 RBAC(或类似机制,您没有指定您正在使用的平台),这样特权操作实际上不需要 root 权限。