如何从public_html托pipe文件,同时仍保留〜/ .ssh /

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

我也想用SSH连接到这个帐户,但是如果我把我的主目录设置为世界可读,SSH抱怨(正确),并且不允许我连接。

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

编辑:在阅读答案和做了一些批判性思维后,我意识到我问的是错误的问题。 我应该问的是:

  • 当这段代码需要Apache写入SQLite数据库时,我该如何安全地开发和testing我的主目录中的php代码。 显然,答案是:把数据库放在/var/www/和其他所有东西在public_html

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

如果你正在阅读的文档,build议你需要给每个人写入权限到你的主目录,以便从public_html提供只读文件,我build议你find最近的火灾和烧伤文档。

如果您的主目录是/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}

你不想在/ home / steve /上使用+ rwx,这将使得系统上的每个人都可以做任何事情,甚至改变你的主目录。 ssh抱怨是正确的。

你需要的是Apache能够到/ home / steve / public_html; 为了做到这一点,它需要能够访问/ home / steve,这是执行位内的东西。 所以“chmod a + x〜”应该就足够了。

(如果你不熟悉它,“〜”是你的主目录的缩写。)

你可能想要像这样设置你家的权限:

 chmod u=rwx,go=x ~ # go+rx if you want others to be able to ``ls /home/steve`` 

并且授予每个人{{读取文件,读取目录和遍历目录}在public_html中的所有内容recursion的能力:

 chmod -R a+rX ~/public_html 

快乐的networking服务!

〜乔恩。