“虚拟”外壳,即。 (SSH) 登录后将用户监禁在进程内

“虚拟”外壳,即。 (SSH) 登录后将用户监禁在进程内

假设我有一个临时用户,他可以通过 SSH 登录系统到 bash shell。我还有一个 PHP(尽管该语言与此处无关)脚本,它充当接受各种命令和其他用户输入并根据它们执行操作的进程(本质上是一个“类似 shell”的脚本)。

现在,我想做的是将用户锁定在上述 PHP 脚本中,即。用户登录后立即运行它(这部分通过 .bashrc 很简单),但同时确保当脚本执行结束时,用户也会自动“踢出”bash,从而退出 ssh 会话,这样他不能通过 bash 本身做任何事情,并且仅限于 PHP 脚本提供的功能。

这可能吗?如果是的话,我将如何去做呢?

更新:根据到目前为止的答案 - 在我的脚本和通过 SSH 登录的用户之间使用 bash 是没有任何要求的。起初对我来说这似乎是必要的。任何强制用户在 SSH 登录后直接进入我的脚本的方法都是受欢迎的答案。

答案1

根据更新的信息,您应该让他们进行私钥/公钥对,并在文件内部.ssh/authorized_keys将其设置为仅运行 script.php 文件。您不应该依赖 来.bashrc获得保护,尤其是因为初始化环境需要它。

答案2

您可以在相应行的最后一个字段中将相关用户的 shell 更改为您喜欢的任何内容/etc/passwd,例如:

specialuser:x:12345:123::/home/specialuser:/usr/bin/restricted_script.php

如果您包含适当的哈希爆炸(例如#!/usr/bin/php在脚本的第一行),它应该立即起作用。出于安全原因,我建议不要将脚本放入用户可写的目录中。

答案3

最简单的方法是将这样的东西放入 .bashrc

php script.php
exit

执行 script.php 后 shell 将退出会话。

但很难说你到底需要做什么以及你需要多高的安全级别。

相关内容