【问题标题】:chmod 600 on an apache server web file still allowing access to from worldapache 服务器 web 文件上的 chmod 600 仍然允许从世界访问
【发布时间】:2017-11-05 02:18:36
【问题描述】:

我的网络服务器作为 www-data 运行,但出于某种原因,可以从网络上毫无问题地看到此图像文件。以下是权限/所有权:

ls -alht /var/www/html/file.jpeg
-rw------- 1 www-data www-data

如果我对该文件执行 chmod 000,则无法按预期看到它。

我完全被这个难住了,有人知道发生了什么吗?非常感谢。

【问题讨论】:

  • 您是否正在清除客户端上的缓存以使浏览器不会从本地存储中加载缓存的图像?此外,Web 服务器可能(可能)正在做自己的缓存,所以也尝试重新启动 httpd。最后,如果您在两者之间使用内容交付网络,那也可能是缓存。尝试 -rw----- 使用新文件名。
  • 感谢您的回复,我已尝试从 4 种不同的浏览器/设备进行访问,这些浏览器/设备之前未查看过该文件。我也尝试重新启动服务器,但没有内容交付网络 - 我在本地主机上运行服务器并从 LAN 内的其他 Web 浏览器访问它。
  • 真的很奇怪,我在 openbsd 系统上的另一个网络服务器上执行了完全相同的权限更改,并且完全相同 - 仍然可以访问文件。那个是在网络上直播的。
  • 文件的所有者是谁,运行的网络服务器是谁?显然他们是同一个用户。如果 Web 服务器具有访问权限,那么谁向 Web 服务器请求它并不重要。如果您想强制需要某种访问管理系统来提供文件的网站用户访问。
  • 所有者是 www-data 而对于 openbsd 它是 www。我找到了一个修复程序,我不知道为什么这个有效而另一个无效,但是在其实际目录上设置权限可以按预期工作,但在文件本身上 - 不!不过,我仍然很困惑为什么会这样,显然我对文件权限的了解比我想象的要少。您不知道为什么目录权限在这里按预期工作,但仅针对文件却没有?

标签: linux security permissions


【解决方案1】:

Linux 权限仅适用于 linux 用户而非网站用户。

您的网络服务器是在 linux 系统中作为用户:组身份 (www-data:www-data) 运行的单个应用程序。这才是最重要的。如果您的网络服务器可以读取/执行该文件,那么从技术上讲,任何访问该网站的人都可以,除非您的网站应用根据 IP、基于应用的凭据或类似内容明确禁止它们。

您可以通过更改 Linux 操作系统级别的权限来影响的唯一事情是阻止网络服务器读取文件或将其提供给任何人,或者使同一系统上的其他 linux 用户无法访问它们。这在使用共享主机时尤其重要,其中多个 linux 用户代表使用同一 Linux 服务器的许多不同的人。

http://linuxcommand.org/lts0070.php

如果你想防止你的网络服务器上的文件被你的网络服务器提供给公众,你应该配置你的 .htaccess 文件或类似的网站 conf 文件,例如 /etc/apache2/sites-available/mysite.conf禁止访问特定位置。

如果您使用 nginx 作为网络服务器,那么您的 conf 文件应该在 /etc/nginx/conf.d 或 /etc/nginx/sites-available 或类似目录下找到

http://www.ducea.com/2006/08/11/apache-tips-tricks-deny-access-to-some-folders/

或者,您可以使用 htpasswd 通过密码限制访问

https://wiki.apache.org/httpd/PasswordBasicAuth

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-18
    • 2020-01-21
    • 2019-09-23
    • 2018-08-20
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    相关资源
    最近更新 更多