我想创建一个只能做一件事的用户:通过ssh指定一个脚本(和脚本的命令行参数),该脚本驻留在一个特定的文件夹中(出于这个问题的目的,让我们称它为/local/remote_only_scripts/foo
)并执行该脚本并返回它的输出。
为了清楚起见,我不希望用户能够执行以下操作:
- 在本地登录到该帐户。登录应用程序是
/bin/login
。它不是/local/remote_only_scripts/foo
文件夹中的脚本,因此不应由用户调用。 - 远程登录帐户。再次登录(是ssh调用的内容?)不是相关文件夹中的脚本。
- 列出目录的内容。ls在
/bin/ls
。它不是相应目录中的脚本。 - 编辑该目录中的文件。emacs,vi,gedit大多数其他编辑器都不是该目录中的脚本。
- 查看该目录中文件的内容。
- 在该目录中执行他没有执行权限的文件。
请注意,这些是示例,还有许多其他我不希望用户执行的操作。在考虑一个动作时,问“这是由脚本来完成的/local/remote_only_scripts/foo
吗?” 如果答案是否定的,则用户将无法执行此操作。如果答案是肯定的,那么用户应该能够做到。
PS:让我澄清一下“添加用户”的含义。我并不是说要向某个ssh子系统添加用户。我的意思是将用户添加到计算机系统。因此,例如,我有一个运行debian稳定版的系统,通过它的地址www.hg.bar.com对其进行调用。我想添加一个用户(通过kuser,users-admin或useradd或类似方式)给他打电话hg_guest。hg_guest无法本地登录或执行上面列表中的任何操作。hg_guest所能做的就是“远程”执行脚本。我说他应该可以通过ssh进行操作,但是现在考虑一下,也许允许他使用ssh可能允许他在本地登录,因此可能需要其他机制。