use*_*182 6 server php permissions cron apache2
我的公司有一个人们注册的网络托管服务。注册过程完成后,我们手动进入并创建一个测试/开发环境供该客户端使用。一般流程是这样的:
somerandomstring.devserver.com尽管我们使用脚本来执行此操作,但数量决定了手动登录并运行它们现在很不方便。因此,我们希望在客户注册过程完成后立即自动触发此过程。
我想了几种方法来处理这个问题。
1) 赋予用户adduser能力并使用PHPexec()函数创建该用户。www-data不过,我必须赋予这种能力,对吗?PHP 在安全模式下运行时,exec() 的命令被限制在指定的目录中。因此,如果我将 /usr/sbin/adduser 复制到只有该命令可用的 /my/custom/dir ,那么挥之不去的安全问题会是什么?我仍然不知如何用新站点更新sites-available文件夹,因为这些文件夹归root所有。
2)让cron来做:一个人必须注册该服务,所以默认情况下他们有一个用户名和其他客户端数据存储在mysql中。从具有adduser功能的帐户中,让 cron 运行一个例行脚本来检查新帐户(可能每 30 到 60 秒一次)。如果找到,为它们创建一个 linux 帐户,填充主目录,写入 apache conf 虚拟主机文件,然后重新加载 apache。
选项 2 感觉是最安全的方式,因为独立的管理员帐户可以处理此问题,而无需 www-data 或网站必须执行系统脚本和程序。问题是批次。最好,我想找到一个选项 1 解决方案,以便立即注册客户端并将它们重定向到已安装并准备使用的服务器实例。我也不喜欢我不得不重新加载/重新启动 apache 这么多。
公司每天都这样做,尤其是网络托管公司。例如,Bluehost 完成注册过程后,您可以立即访问 /home/user/public_html 并与之交互。因为存在商业解决方案,我相信已经对如何安全可靠地完成它进行了很多思考。我想要完成的事情是相同的,只是规模要小得多。
\n\n\xe2\x9a\xa0
\nWARNING\xe2\x9a\xa0
\n这是一种固有的安全风险,随时都有很大的南下潜力。我强烈建议不要这种设置,但是哦,好吧。
\n我对由于您遵循本文中给出的任何内容而发生的任何事情不承担任何责任,我也不建议您遵循此系统。这主要用于教育/研究目的。
\n
Linux 具有允许setuid任何给定程序(例如sudo)以高于当前执行用户的权限运行的功能。您可以编写 shell 脚本来完成您需要的一切。
从那里开始,因为 shell 脚本不能setuid,所以您需要将其转换为二进制文件。shc您可以为此使用类似的东西。
一旦您的 shell 伪二进制文件(示例名称:)bootstrap_user包含您需要的所有内容,您就可以进行一些有趣的更改以使其准备就绪。也就是说,这个:
将其设置为root和 group 所拥有www-data。
chown root:www-data ./bootstrap_user\nRun Code Online (Sandbox Code Playgroud)\n为所有者(root)分配 RWX 权限,为组分配读取和执行权限,不为其他任何人分配:
\n chmod 750 ./bootstrap_user\nRun Code Online (Sandbox Code Playgroud)\n将二进制文件移动到 PHP 可以exec()访问的地方。
最后,添加setuid该位,以便以 root 身份执行:
chmod u+s ./bootstrap_user\nRun Code Online (Sandbox Code Playgroud)\n在 PHP 中,您现在可以bootstrap_user作为可执行文件进行调用,并传递任何所需的参数。请务必注意转义和清理输入。
小智 1
我想我会对任何让浏览器用户能够自动生成 Unix 用户的东西保持警惕。如果您这样做了,它可能应该包含排队机制以及日志或数据库,这样就不会发生以下情况:
那么,当用户重新启动已经完成或仍在发生的事情时会发生什么?
| 归档时间: |
|
| 查看次数: |
1759 次 |
| 最近记录: |