![限制用户查看不属于他的文件](https://linux22.com/image/35454/%E9%99%90%E5%88%B6%E7%94%A8%E6%88%B7%E6%9F%A5%E7%9C%8B%E4%B8%8D%E5%B1%9E%E4%BA%8E%E4%BB%96%E7%9A%84%E6%96%87%E4%BB%B6.png)
通常,诸如此类的文件/etc/passwd
具有权限644
,这意味着每个人都有权读取该文件(4
),但只有所有者有权读取它和写入它 ( 4+2
= 6
)。
我想在系统上创建一个“受限”用户,该用户只能对其实际拥有的目录和文件进行读写访问。甚至如果系统文件具有/etc/passwd
读取权限,我不希望该用户能够读取它们。
我可以将计算机上的所有文件更改为所有不拥有这些文件的用户都无法读取,但我担心这会破坏很多东西。
有什么方法可以限制某个特定用户查看不属于他的所有文件吗?
答案1
如果您的用户要通过 SSH 连接到系统,那就有点困难了。如果他们使用 SFTP 客户端,您可以设置 chroot 监狱。这将允许您将 ChrootDirectory 设置为您引用的文件夹。
答案2
一种可行的选择是通过最小化的系统安装来设置 chroot。在 Debian 和 Ubuntu 中,这可以通过 debootstrap 来完成。在 FreeBSD 中,这是通过监狱更彻底地完成的(除了这里,我不会专门提及监狱)。
完成此步骤后,在 chroot 环境中的不同端口上启动 sshd。像这样的东西:
chroot /srv/chroot-for-user /usr/bin/sshd -p 2200
将用户添加到 chroot 的 /etc/passwd 并为其创建主目录。
他们将登录到新环境,并且只能看到 chroot 边界之前的文件。他们仍然像以前一样对 chroot 中的所有系统文件具有读取权限,因为没有它们,他们将无法使用普通的系统工具,如 ls、awk 和 tee,但它们将是自己的副本,不与任何人共享在 chroot 之外。
还有其他更聪明的方法来完成这种事情,但 chroot 是限制文件系统访问的经过验证的正确方法。