我正在使用以下命令启动屏幕,在设置为用户shell的shell脚本中,以防止他们退出。
screen -dRRq -S ${USER}_MC -s $HOME/runthis.sh
有没有办法保护屏幕,阻止用户使用转义序列,或者在最坏的情况下,阻止他们运行类似的命令exec
?
编辑:这并不是说用户应该有权访问实际的命令提示符 shell。我只希望他们能够运行一个持续运行的程序,据我所知,screen 是实现这一点的最简单方法。但是,退出它很容易C-a : exec bash
。
现在我刚刚使用 .screenrc(尤其是冒号)解除了大多数键的绑定,我只是想确保我没有遗漏一些更简单的东西。
答案1
如果您确实想运行 screen,您可以让其他用户(我们称她为 Alice)运行该应用程序,并允许受限用户(我们称他为 Bob)附加 screen 会话。(我不知道是否可以对单个用户执行此操作。)使用 screen 的 ACL 功能来限制 Bob 可以执行的操作。您可以输入类似以下内容.screenrc
(警告,请检查文档并测试安全性,我可能省略了一个重要步骤):
multiuser on
aclchg bob -w-x #,?
aclchg bob +x copy,detach,help
exec $HOME/runthis.sh
如果你不想运行 screen,你可以通过受限外壳(是的,即使您不想授予他们 shell 访问权限)。您可以让用户运行应用程序,nohup
并且如果相关的话,还可以让他们查看日志文件。您可以使用的受限 shell 是rbash
(man rbash
locally 将显示bash
手册页的相关部分)。您也可以考虑发送(Ubuntu 软件包 )。
答案2
如果我理解了你的问题 - 尝试使用铁棒壳,它基本上否认了一切
“Iron Bars Shell (ibsh) 是一款适用于 Linux 和 Unix 的免费开源受限系统 shell。它体积小、安全,并且基于全新的视角:拒绝一切!!如果需要,就允许它。”
如果您想在某个时候为某个用户启用某些功能/任何事情,您将能够这样做......