我如何限制用户只能进入其当前目录?
我尝试过以下步骤本页提及配置 rssh chroot jail 以将用户仅锁定到其主目录,但这看起来太复杂了。有没有更简单的方法?
答案1
我用监狱工具在 $work,只需要几个命令。他们甚至提供了一个chroot shell 指南。为用户维护 chroot 最困难的部分是复制他们运行程序所需的库和二进制文件。jk_cp命令负责复制依赖项。
答案2
不。用户环境需要某些文件存在,并且该文章确保它们存在。
答案3
我倾向于认为你混淆了结果和方法。你通过将用户锁定在他们的主目录中到底想实现什么?运行一个安全但功能齐全的 chroot 介于“不值得”和“不可能”之间;无论你想完成什么,都有可能通过其他更好的方式完成。
答案4
最简单的方法是将用户的 shell 设置为/bin/rbash
。这将bash
进入“受限”模式。摘自 bash 手册页:
它的行为与 bash 相同,但不允许或不执行下列操作:
- 使用 cd 更改目录
- 设置或取消设置 SHELL、PATH、ENV 或 BASH_ENV 的值
- 指定包含 / 的命令名称
- 指定包含 / 的文件名作为 . 内置命令的参数
- 将包含斜杠的文件名指定为 hash 内置命令的 -p 选项的参数
- 启动时从 shell 环境导入函数定义
- 在启动时从 shell 环境中解析 SHELLOPTS 的值
- 使用 >、>|、<>、>&、&> 和 >> 重定向运算符重定向输出
- 使用 exec 内置命令将 shell 替换为另一个命令
- 使用 -f 和 -d 选项向启用内置命令添加或删除内置命令
- 使用 enablebuiltin 命令启用已禁用的 shell 内置命令
- 为命令内置命令指定 -p 选项
- 使用 set +r 或 set +o restricted 关闭限制模式。
读取任何启动文件后都会强制执行这些限制。
注意:rbash 并不是一座坚不可摧的堡垒。它仍然可能留下巨大的漏洞,而且一个足够熟练的“攻击者”(即比您懂得更多的人)可能能够做很多您不想要的事情(或完全绕过您的限制)。
仍然可以读取系统上任何全世界可读的文件。
还要确保/bin/rbash
不在,/etc/shells
否则他将能够使用 将自己的 shell 更改为不受限制的内容chsh
。