我在 Linux 共享主机上有一个 Web 应用程序。假设我有一个.htpasswd
文件,一些存储数据库密码的配置,并且通常不希望有人窥探我的源代码以寻找漏洞。
网络服务器 (apache) 需要对上述文件具有读取权限(在某些情况下需要写入权限)。但是我不希望同一共享主机上的其他人具有访问权限。
我一直不太明白这是怎么回事。问题是这里类似,但似乎更多地指向阻止网络应用程序意外托管密码文件。
据我所知,我只需要处理基本的 Linux 权限。在一台服务器上,我需要授予“其他”Apache 权限。然后删除所有其他用户所在的组权限,拒绝他们访问。这似乎很迂回。在另一台服务器上,有一个nobody
组public_html
仅设置了组权限。
一个问题是,如果 apache 用户有权访问我的文件,那么就可以编写并执行一个简单的脚本来获得其他用户的访问权限:
<?php
header("Content-Type: text/plain");
include $_GET['f'];
?>
TLDR:我需要 apache 来访问源文件和密码,但不能访问同一台机器上的其他用户(当然管理员除外)。
什么是常见设置?
相关问题:
答案1
创建一个组,将 apache/www-data 添加到该组。然后:
chown -R apache:组名 /var/www/mywebapp/ && \ chmod -R 640 /var/www/mywebapp
这将授予所有者对该文件夹及其所有子目录和文件的读写权限 (6) 和组读取权限 (4)。apache 用户和所有者将能够访问这些文件,但其他人将无法访问。您应该确保他们无法通过 su 访问 apache 用户。
使用 vhost 配置中的目录块来限制文件夹级别的访问。 http://httpd.apache.org/docs/2.0/misc/security_tips.html#查看保护服务器文件 http://www.anchor.com.au/hosting/dedicated/Security_Hardening_of_an_Apache_Virtual_Host