可能重复:
限制每个用户只能访问自己的主文件夹
我有一个运行 10.04 LTS 的网络服务器,作为服务器管理领域的新手,我陷入了困境。
我恳请您不要转移话题。我意识到我有些地方不对,比如启用了 root 权限,但这不是我在这里发帖的原因。谢谢 =D
情况
现在,我有三个用户。Root 显然可以访问所有内容,另外两个用户各自拥有一个网站。
对于这两位用户,他们的网站位于他们各自的主文件夹中,位于他们各自拥有读取、写入和执行权限的额外文件夹中。这是他们唯一可以写入的文件夹。他们无法删除它,也无法更改文件夹之外的任何内容。
到目前为止一切都很好,除了默认情况下,他们还可以读取系统中的任何文件,这意味着他们可以导航到我的其他网站的文件夹并读取,例如,从 WordPress 配置文件中读取数据库密码。
这显然是有问题的。
用户使用 FileZilla 通过 SSH 访问他们的文件和文件夹。
问题
- 我如何才能阻止这些用户读取敏感数据,即如何才能限制他们只能访问他们的主文件夹?
要求
用户必须继续使用 FileZilla 通过 SSH 登录(即没有 FTP 解决方案)
Apache 仍然必须能够访问用户的文件夹(即不能将 chmod 设置为 750)
已知问题
- 包含命令行工具的文件夹(我认为是 /bin/bash)可能必须在用户主文件夹中进行符号链接?请解释如何执行此操作。
如果你有答案,请假设我对命令行一无所知,我将不胜感激。我就像这些不知道如何在 Windows 中复制粘贴文件的用户一样,只能在 Linux 上使用命令行 T_T
谢谢 =D
答案1
不要让数据库配置可供所有人阅读。将它们限制为www-data
用户和/或组。实际上,将整个主目录限制为其所有者和www-data
组。
chgrp -R www-data /home/user
chmod -R u=rwX,g=rXs,o= /home/user
(该g=s
位将使所有新创建的文件继承该www-data
组。)还将默认 umask(在/etc/profile
或通过 PAM)设置为027
,默认情况下拒绝“其他”的访问。
当然,这很容易绕过。只需编写一个网页(PHP 或类似程序)来读取其他用户的配置。更好的解决方案是安装苏普,这使得 CGI 网页在其所有者的帐户中运行;使用 suPHP 你可以不是需要www-data
群组所有权 – 只需将所有文件限制为其所有者(u=rwX,go=
)。然而,这可能会引入不同的安全漏洞——WordPress 现在对整个网站拥有写权限,考虑到 WP 的安全历史,这很糟糕。
至于系统的其余部分 – /var
, /usr
,/etc
大部分不是敏感。敏感部分已受标准权限保护。无需隐藏其余部分。