我有两个相互冲突的需求。我想使用 Apache 提供文件服务,但根据/home/steve/public_html/
我读过的文档,Apache 要求我设置a+rwx
/home/steve/。
我也想使用 SSH 连接到该帐户,但如果我将我的主目录设置为全世界可读的,SSH 就会抱怨(这是正确的),并且不允许我连接。
有没有办法,我可以来自 public_html 提供文件,同时仍允许 SSH 访问?
编辑:在阅读了答案并做了一些批判性思考后,我意识到我问错了问题。我应该问的是:
- 当此代码需要 Apache 写入 SQLite 数据库时,我如何在主目录中安全地开发和测试 php 代码。答案显然是:将数据库放在 下
/var/www/
,其他所有内容放在 下public_html
。
答案1
我有两个相互冲突的需求。我想使用 Apache 从 /home/steve/public_html/ 提供文件,根据我读过的文档,这要求我在 /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}
答案2
您不希望在 /home/steve/ 上使用 a+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 中的所有内容递归{读取文件、读取目录和遍历目录}的权限:
chmod -R a+rX ~/public_html
祝您网络服务愉快!
〜乔恩。