我正在建立一个将在后台运行 tcl 脚本的网站。
我想从我的网站调用并执行它的 tcl 脚本很少。我在 Linux/Apache 服务器中使用 PHP 设计页面。我很少有用户会执行这些脚本,但是这些脚本应该以该用户而不是 web 用户 (_www) 的身份执行,因为 tcl 脚本最终会自动将报告发送给执行它的用户。
我认为的一个选项是更改用户(su),然后通过 执行脚本shell_exec
,但我看到了一些安全问题。
那么有没有更好的方法呢?
我会使用 执行脚本sudo
,您可以进行配置,以便您的 WWW 用户可以在其他用户下执行 1 个单个命令(您的 tcl 脚本),而无需密码。
有关 sudo 的一些参考资料,请参阅this (尤其是配置部分)
对此的一个特定于 Tcl 的解决方案可能是将您的 Tcl 脚本构建到 starpacks(单文件可执行文件)中,然后由您希望它们运行的用户创建拥有并设置它们。这仅适用于您希望用户成为脚本所有者的情况,而不是通过 Internet 登录的其他用户。后一种情况更难解决(由于涉及复杂的安全问题),以至于人们部署了整个应用程序基础设施来处理它。
你考虑过suEXEC吗?