![安全的 Apache PHP 安装:使用正确的用户:组](https://linux22.com/image/1395631/%E5%AE%89%E5%85%A8%E7%9A%84%20Apache%20PHP%20%E5%AE%89%E8%A3%85%EF%BC%9A%E4%BD%BF%E7%94%A8%E6%AD%A3%E7%A1%AE%E7%9A%84%E7%94%A8%E6%88%B7%EF%BC%9A%E7%BB%84.png)
我想“完美地”保护我在 Linux 服务器上安装的 Apache PHP。过去,我曾遇到过脚本病毒/漏洞问题,因此它需要一个“安全”的解决方案。
我当前的解决方案:
- 每个网络空间都有自己的用户,并有自己的用户组(例如:user1:user1)。
- Apache 在 http:http 下运行
- PHP 通过快速 CGI 运行,Suexec用户组用户1:用户1
- 网络空间目录归 user1:http 所有,初始设置 chmods:全部设置为 0,然后 chmod u+rwX,g+rX。这意味着,所有者(user1)具有完全访问权限,组具有读取访问权限,其他人无权访问。
这种方法运行良好而且安全...但是在以下情况下它将不起作用:
- 通过 PHP 创建文件
- 通过 FTP 上传文件。
然后文件将创建为 user1:user1。这(通常)是正确的。但是 apache(http:http)不再具有访问权限。
一个解决方法是:将所有文件保留为 user1:user1,但以 root 身份运行 apache。但是,这不是很安全...
那么,有什么好的解决办法吗?当然,我读过几十篇博客,但每个解决方案都会有另一个问题。
答案1
一个好的解决方案可能是将 Apache 用户(http)添加到每个用户组:
adduser http user1
adduser http user2
adduser http user3
etc...
您需要一个小脚本来完成此操作,但它大多数时候都会为 Apache 提供所需的访问权限。
替代/更好的解决方案
查看 FTP 服务器是否有创建文件的默认组选项,并使用以下命令设置 PHPSuexecUserGroup user1:http