用 python 程序的 cmdline 界面替换 bash shell

用 python 程序的 cmdline 界面替换 bash shell

我有一个使用python的程序命令命令行界面模块。

现在,我希望它在任何普通用户登录时在我的 Linux 服务器上运行,这样用户就永远不会得到默认的 Linux 提示(即,他不应该能够终止程序或将其发送到后台或任何类似的东西)。

出于安全考虑,程序绝不应允许用户访问正常提示。用户应始终使用程序的命令行来触发所有命令。(程序内置了各种过滤器)。

尝试为用户输入程序执行命令/etc/password(用程序执行 cmd 替换默认 bash shell)并且尝试将其放入用户.bashrc文件中,但无用;用户仍然可以访问默认提示。

任何对此的指点都会非常有用。

答案1

您可以在 /etc/profile 中用您的脚本替换 SHELL=/bin/sh(或 ssh 登录的等效脚本)-大多数终端仿真器和许多其他应用程序将探测环境以获取此值来运行默认 shell,但如果失败,将回退到 /bin/sh 或 /bin/bash(您可能希望允许自己使用 shell,因此将其包装在用户/gid/uid 检查中)

改用 shell 脚本(或者直接将其添加到 bashrc 的底部,不带标题)

#!/bin/sh
#public domain fake shell
while read -p "$PS1" CMD; do
   case "$CMD" in
      *exit*|*bad_case*|*another bad case*)echo bad command: user info logged etc..;;
      *good case*|*another good case*|*more*)eval "$CMD";;
      *)echo command not supported;;
   esac
done

或者在 shell 上更改权限 - 但如果你必须这么做,请做好随机失败的准备

相关内容