在允许shell访问的同时限制远程ssh命令

时间:2013-11-22 20:17:25

标签: linux bash ssh sftp chroot

我希望用户使用ssh并且只能访问我的CLI。目前这是通过在.profile中执行命令来完成的,该命令以另一个用户身份运行cli(这在sudoers中完成,它们只能以此用户身份运行CLI而不执行任何其他操作)。我遇到的一个问题是用户仍然可以用shh运行命令,比如bash,这是我想要限制的。还有一个档案我希望用户能够使用sf​​tp进行传输。我想我只会创建另一个用户并对其进行chroot,以便他们只能访问该文件。我考虑使用相同的用户执行此操作,但在仍然允许使用CLI并限制远程ssh命令的情况下对其进行chroot似乎是一场噩梦。很抱歉,如果这令人困惑,我无法用语言表达所有这些并且对这类东西没有多少经验。

总之,我基本上想:

- 允许用户使用ssh,但只能访问我的CLI

- 防止用户使用ssh做其他事情

- 允许传输诊断存档

任何人都有关于实现这一切的最佳方法的一些想法?如果有任何其他有用的信息,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:0)

如果用户通过ssh登录,则他/她被锁定在chroot监狱中。我不确定你做了什么,所以以下内容可能没什么用处:

尝试:

usermod -s /path/to/CLI username

/ path必须在jail中可见,CLI必须是静态链接的。如果你使用system()调用来执行像ls这样的命令 - 而不是使用opendir(),dirent等 - 那么你必须有一个单独的可见/ lib目录和库。例如,在本地可见的/ usr / bin目录中的ls可执行文件或其他命令的单独副本。在这种情况下,CLI可以动态链接。使用

ldd executablefilename

命令以确保您可以看到所需的所有库。

考虑在网上查看一些chroot示例/教程。 Google为linux chroot jail