限制用户对 Linux 中的主文件夹的访问

限制用户对 Linux 中的主文件夹的访问

可能重复:
限制每个用户只能访问自己的主文件夹

我有一个运行 10.04 LTS 的网络服务器,作为服务器管理领域的新手,我陷入了困境。

我恳请您不要转移话题。我意识到我有些地方不对,比如启用了 root 权限,但这不是我在这里发帖的原因。谢谢 =D


情况

现在,我有三个用户。Root 显然可以访问所有内容,另外两个用户各自拥有一个网站。

对于这两位用户,他们的网站位于他们各自的主文件夹中,位于他们各自拥有读取、写入和执行权限的额外文件夹中。这是他们唯一可以写入的文件夹。他们无法删除它,也无法更改文件夹之外的任何内容。

到目前为止一切都很好,除了默认情况下,他们还可以读取系统中的任何文件,这意味着他们可以导航到我的其他网站的文件夹并读取,例如,从 WordPress 配置文件中读取数据库密码。

这显然是有问题的。

用户使用 FileZilla 通过 SSH 访问他们的文件和文件夹。

问题

  • 我如何才能阻止这些用户读取敏感数据,即如何才能限制他们只能访问他们的主文件夹?

要求

  1. 用户必须继续使用 FileZilla 通过 SSH 登录(即没有 FTP 解决方案)

  2. 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大部分不是敏感。敏感部分已受标准权限保护。无需隐藏其余部分。

相关内容