如何在保留 ~/.ssh/ 的安全性的同时从 public_html 托管文件

Ste*_* V. 1 permissions ssh apache-2.2

我有两个相互矛盾的需求。/home/steve/public_html/根据我阅读的文档,我想使用 Apache 提供文件,要求我a+rwx在 /home/steve/ 上设置。

我也想使用 SSH 连接到这个帐户,但是如果我将我的主目录设置为世界可读,SSH 会抱怨(确实如此),并且不让我连接。

有没有办法可以在仍然允许 SSH 访问的同时从 public_html 提供文件?

编辑:阅读答案并进行一些批判性思考后,我意识到我问错了问题。我应该问的是:

  • 当此代码需要 Apache 写入 SQLite 数据库时,如何在我的主目录中安全地开发和测试 php 代码。显然,答案是:将数据库/var/www/放在public_html.

lar*_*sks 6

我有两个相互矛盾的需求。我想从 /home/steve/public_html/ 使用 Apache 提供文件,根据我读过的文档,需要我在 /home/steve/ 上设置 a+rwx。

如果您正在阅读的文档表明您需要授予每个人对您的主目录的权限才能提供来自 的只读文件public_html,我建议您找到最近的火并烧毁文档。

如果您的主目录是/home/steve,那么为了让 Web 服务器访问您的public_html目录,您需要以下内容:

  • 对您的主目录 ( chmod a+x /home/steve) 的匿名执行访问。这允许 Web 服务器用户将目录更改为您的public_html目录(但特别是不允许 Web 服务器用户查看您的主目录中的文件列表)。

  • 匿名读取和执行访问您的public_html目录 ( chmod a+rx /home/steve/public_html)。

为了保护.ssh目录的安全性,您需要以下内容:

  • 只允许您(和其他任何人)访问该目录: chmod 700 /home/steve/.ssh
  • 只允许您对关键文件进行读/写访问: chmod 600 /home/steve/.ssh/{authorized_keys,id_rsa}

  • 嗯,`a+...` 的意思是“所有...”,而不是“匿名...”。Apache 实际上只需要在您的主目录中使用 `o+x`(其他执行)。 (3认同)