尝试下载使用 SSH 上传的文件时出现 403 禁止访问

尝试下载使用 SSH 上传的文件时出现 403 禁止访问

我可以通过 FTP 访问 Linux 上的 Apache 服务器来上传文件,以便可以从网络下载这些文件。

我最近被授予了额外的权限的 SSH 访问权限,并认为将文件直接下载到服务器会更快,而不是将它们下载到我的机器然后通过 FTP 传输到服务器。

当我使用 SSH 将文件下载到服务器,然后将其放在 public_html 目录中时,它在网络上不可见。权限(来自 SSH 和 FTP 客户端)与所有其他可见文件相同,但它在目录列表中不可见,如果我尝试在浏览器中输入文件名,我会收到 403 错误。

显然,当我通过 FTP 将文件传输到服务器时,会发生一些其他事情使其在网络上可见,而我目前并不知道这一点。

我遗漏了什么导致文件在网络上不可见?我该如何修复它?

答案1

可能的原因:

  • umask 问题(Unix 文件权限)
  • selinux 上下文
  • 扩展 ACL

答案2

您通过 SSH 使用帐户(可能是 root 帐户或其他帐户)进行连接,对文件的权限可能会阻止 www-data (Apache) 访问您上传的文件。因此,您可以执行操作chown www-data:www-data yourfile以让 Apache 可以访问它们(确保包含它们的目录也可以由 Apache 访问)

答案3

通过 SSH 进入服务器,然后进入文件夹。然后执行:
ls -al
这将显示该目录中所有文件的所有权和权限。将输出粘贴在此处(我们只需要查看不可见文件的条目和可见文件的类似条目)

答案4

我将一些文件从服务器 1 传输到服务器 2。现在我想将它们从服务器 2 传输到服务器 1。首先,我将文件移动到可以从 Web 访问的帐户(用户名:usr1)mkdir /home/usr1/public_html/publicFiles mv /*.tar /home/usr1/public_html/publicFiles

然后: cd /home/usr1/public_html/publicFiles chown usr1:usr1 *.tar chmod 0644 *.tar

ls -l 输出: -rw-r--r-- 1 usr1 usr1 22375680000 9月20日 04:37 file1.tar -rw-r--r-- 1 usr1 usr1 28196495360 9月20日 17:51 file2.tar -rw-r--r-- 1 usr1 usr1 598691840 9月22日 04:45 file3.tar

然后我打开FF并输入SiteName.com/publicFiles输出:

/publicFiles 的索引

图标名称 最后修改时间 大小 描述[DIR] 父目录 -
[ ] file3.tar 2010-09-22 04:45 571M

只显示文件 3!即使有直接链接,我也无法访问文件 2 和文件 3!发生 403 错误!

请注意,File3 为 571 MB,而 file1 和 file2 大于 25 GB,我认为原因是文件大小

相关内容