![你所要求的...](https://linux22.com/image/172337/%E4%BD%A0%E6%89%80%E8%A6%81%E6%B1%82%E7%9A%84....png)
我有一个问题,我需要授予某人访问权限,但连接到数据库的唯一方法是通过 SSH,所以如果我正确理解了所有内容,我需要为他创建一个 Linux 帐户(在 Debian 10 机器上) ,创建的用户没有任何在文件夹中写入的权限,所以我猜他不能破坏任何东西。
但问题是他可以读取文件系统中的任何文件,我真的不知道什么是最佳实践,我知道 chmod 可以解决所有问题,但我不知道删除其他人的所有权限是否是一个好的实践并将每个文件的组更改为我的主 Linux 帐户。
我想我应该删除/bin文件夹下命令的所有执行权限并更改文件的组?
谢谢阅读!我希望我说清楚了。
答案1
你所要求的...
您正在寻找的是chroot
.这会将/
文件系统的根设置为您选择的位置。
如果您chroot
为/home/bob
用户,bob
此位置将/
类似于bob
。他将看不到文件系统的其余部分。因此,您希望将他需要运行的任何程序放置在此文件夹下。
正如我们现在所知,chroot
我们可以找到大量的答案和指南:
你想要什么...
如果数据库可以从 Debian 机器访问,而这就是所需要的,那么您正在寻找一个SSH隧道。您仍然需要拥有一个用户帐户,但这可以完全锁定。重要的 SSH 设置是:
AllowTcpForwarding yes
- 我们被允许有一条隧道ForceCommand /bin/false
- 如果您尝试通过 ssh 登录,您将不会获得 shellChrootDirectory /opt/dummy_location/%u
- 如果您以某种方式获得 shell,我们只能将文件系统的视图限制为空位置
有了这些知识,我们可以再次找到大量的现有技术:
上面处理了 ssh 连接。如果用户可以物理访问服务器,那么请记住为用户设置 shell:
usermod -s /bin/false userbob
按照上述顺序,您可以四处搜索以了解如何与任何数据库客户端连接。由于 SSH 的所有魔力都发生在网络层,因此这适用于所有客户端!当隧道启动时,看起来数据库正在本地计算机上运行。
有些客户了解 SSH 隧道,这可以让您的生活变得更轻松。常见的客户端是 HeidiSQL - 请参阅如何使用 HeidiSQL 通过 SSH 隧道连接到 MySQL 数据库。
如果你走隧道路线请 请 请首先使用普通帐户进行测试以确保其有效前你开始锁定隧道用户!
最后你应该使用SSH 密钥而不是密码。但这与 chroot 的复杂性相结合,最好将其留作最后实施。
答案2
如果用户可以从其/home
目录工作并且无需更改目录,这可能是一篇有用的帖子(不仅仅是答案):如何限制用户
您也可以通过编辑来完成此操作/etc/sudoers
,但就您而言,我认为这是不合适的。