2013-11-22 57 views
3

我想要一个用户ssh并且只能访问我的CLI。目前,这是通过执行.profile中的一个命令完成的,该命令以另一个用户身份运行cli(这是在sudoers中完成的,他们只能以该用户的身份运行CLI而没有其他任何操作)。我遇到的一个问题是用户仍然可以用shh运行命令,比如bash,这是我想要限制的。还有一个我希望用户能够通过sftp传输的档案。我想我只是让另一个用户和他们chroot,所以他们只能访问该文件。我研究过使用同一个用户来做这件事,但是在允许使用CLI和限制远程ssh命令的同时对它们进行chroot,看起来就像是一场噩梦。对不起,如果这是令人困惑的,我很难说出所有这些,并没有太多的经验,这种类型的东西。在允许shell访问的同时限制远程ssh命令

总之我基本上要:

- 允许用户为SSH,但只能从做访问我的CLI

- 防止用户任何其他使用ssh

- 允许转让的诊断归档文件

任何人都有关于完成所有这些最佳方式的一些想法?请让我知道是否有其他任何有用的信息。谢谢!

+0

您能详细说明用户所需的操作吗?他们上传文件,运行哪个命令?你可以用cronjob替换访问吗?你为什么使用sftp?如果你限制bash,那么用户将如何运行任何命令? – Dejan

+0

用户需要能够通过ssh访问我的自定义CLI(或者可能不是ssh?我不知道替代方案是什么)。没有上传,没有其他的命令,但他们需要能够从机器上传输一个特定的文件。我认为只有sftp和chroot一起工作,这就是为什么我打算使用它,我再次向替代品敞开大门。他们不需要在启动CLI之外运行任何命令。 – user2577911

回答

0

如果用户通过ssh登录,他/她被锁定在chroot jail中。我不知道你做了什么,所以下面可能无法帮助那么多:

尝试:

usermod -s /path/to/CLI username 

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

ldd executablefilename 

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

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