限制用户到他们的主目录

我如何限制用户只有他的当前目录?

我尝试了在这个页面上提到的步骤来configurationrssh chroot jail来locking用​​户到他们的主目录,但是这看起来太复杂了。 有更容易的方法吗?

我在$ work上使用Jailkit ,只需要几个命令。 他们甚至提供了一个chroot shell的howto 。 关于为用户维护一个chroot最难的部分是复制它们运行程序所需的库和二进制文件。 jk_cp命令负责依赖复制。

不。用户环境需要某些文件才能存在,该文章确保它们存在。

我倾向于认为你用方法混淆了结果。 通过将用户locking到他们的家庭,你究竟想要达到什么目的? 运行一个安全但function不重要的chroot介于“不值得”和“不可能”之间。 你想要完成的任何事情都可以通过其他更好的方式来完成。

最简单的方法是将用户的shell设置为/bin/rbash 。 这使bash进入“受限制”模式。 从bash手册页:

它的行为与bash的行为相同,但不允许或不执行以下行为:

  • 用cd改变目录
  • 设置或取消设置SHELL,PATH,ENV或BASH_ENV的值
  • 指定包含/
  • 指定包含/作为参数的文件名。 内build命令
  • 指定一个包含斜杠的文件名作为散列内build命令的-p选项的参数
  • 在启动时从shell环境中导入函数定义
  • 在启动时从shell环境中parsingSHELLOPTS的值
  • 使用>,>,<>,>&,&>和>>redirect操作符redirect输出
  • 使用exec builtin命令将shellreplace为另一个命令
  • 使用-f和-d选项向内置命令添加或删除内置命令
  • 使用enable builtin命令启用禁用的shell内置函数
  • 指定命令内置命令的-p选项
  • 用set + r或set + o限制closures限制模式。

任何启动文件读取后,这些限制都会强制执行。

注意:rbash不是一个不可逾越的堡垒。 仍然有可能留下漏洞,而一个足够熟练的“攻击者”(即比你更了解的人)可能会做足够你不想要的东西(或完全绕过你的限制)。

在系统上读取任何世界上可读的文件仍然是可能的。

还要确保/bin/rbash /etc/shells否则他将能够使用chsh将自己的shell更改为不受限制的内容。