Linux 服务收集用户登录时的输入

Linux 服务收集用户登录时的输入

我想定义一个 systemd 服务,根据某些条件,在用户的登录 shell 提示可用之前,向用户提示输入一些文本。

这是我想要的事情类型的示例:当用户在其他任何事情之前登录并且在用户可以输入任何内容之前,运行脚本提示用户输入他们喜欢的名字。该名称保存在其主目录中的文件中。但是,如果名字文件已存在,则脚本不执行任何操作。

这是登录用户的样子:

my-server login: joe-user
password: <user types in password>
System notice: joe-user we need to gather some information.
----
Please type in your preferred first name: 

进行提示和文件写入的脚本很简单,但是如何编写服务以便用户登录后立即获取脚本?无论用户使用哪个 shell,这都应该有效。

答案1

虽然不是 100% 匹配 - 它看起来足够接近 - 有一个名为的工具systemd-ask-password- 这是一种向您不想存储在磁盘上的 systemd 服务提供密码的方法。

例如,存在多个可以回答此类查询的代理systemd-tty-ask-password-agent

但请注意:回答此类查询需要特权用户(因为它是系统范围的查询,并且不绑定到任何用户)。

如果您想向没有权限的特定用户询问某些内容,那么在登录时执行的自编写脚本(例如从 调用 $HOME/.profile)可能是进行此类查询的更好地方......

相关内容