假设我有一个没有桌面环境的Linux操作系统。 PC启动完成后,它会直接向用户显示shell终端。
我打算编写一个 shell 脚本程序,并使其在每次 PC 启动完成后自动启动,这样,用户在 PC 启动完成后就会看到我的 shell 脚本程序,而不是正常的 shell 提示符。
在 shell 脚本程序中,我会给用户一个选项列表,让他们在我的电脑上配置一些东西。我希望 shell 脚本程序在这台电脑上持续运行。
我想将用户锁定在 shell 脚本程序中,这样他们就无法退出到正常的 shell 提示符并访问文件系统。只有拥有 root 密码的管理员才能退出到正常的 shell 提示符并对 PC 进行更改。
有人能给我一些建议我该怎么做吗?
谢谢。
答案1
让自动登录用户的登录 shell 成为 rbash,并让脚本成为他们唯一可以运行的东西。即使他们退出了脚本,他们也只能注销或重新启动脚本,无法做任何事情。
答案2
在 中添加对脚本的调用/etc/rc.local
,该脚本在 中的系统服务/etc/init.d/
全部启动后、登录提示显示之前运行。该脚本将以 root 身份运行,但没有登录用户,因此您可以精确控制此时发生的情况。只要您的脚本不退出,用户就无法登录并访问 shell。
答案3
getty
是处理终端的程序。如果你告诉它运行 shell 以外的程序,例如
getty -l my-sandbox-program-that-is-not-as-powerful-as-the-shell
您可以更好地控制用户的操作。
答案4
您还可以在 bash 脚本中添加一个陷阱来捕获 CTRL-C。这样,您就可以锁定人们退出它(也值得捕获 CTRL-Z)