我有一台需要某些凭据才能启动的服务器。目前,服务器读取key-value pair file
这些凭据。我正在寻找一些实际上可以避免的使用key-value pair file
。
该组件应该:
- 将密码缓存在密钥环中
- 使用密钥环中的正确凭据启动我的服务器
- 如果我的服务器停止/终止,请重新启动它
最初启动或重新启动此组件时,可以提示用户输入不同的密码。但是,如果我的服务器进程重新启动,它不应该提示。
我正在阅读有关看门狗和 systemd 的内容。Systemd unit files
有点适合我的需要,但我找不到一种方法来存储和检索密钥环中的凭据。
更新:我还在阅读有关systemd-ask-password
缓存我的密码的内容。但是,它似乎只会缓存密码 2.5 分钟。我想缓存它直到设备停止/重新启动。
更新2:我所说的服务器是指我的服务器进程。在机器重新启动时提示输入密码是可以的。
答案1
它似乎systemd-ask-password
做了你想要的大部分事情,除了密钥过期之外,这是硬编码的2.5 分钟后,您自己发现:
#define KEYRING_TIMEOUT_USEC ((5 * USEC_PER_MINUTE) / 2)
一种选择是您构建自己的询问密码程序,将其存储在内核密钥环中较长时间(或者可能无限期)。您甚至可以将systemd-ask-password
其用作它的起点。您可以从您所在单位致电此类代理ExecStartPre=
。 (当然,一种可能的选择甚至是将其构建到主程序本身中,因为它将访问密钥环以获取密码,如果找不到密码,它可能会在此时提示。)
另一种选择是建议对systemd-ask-password
上游 systemd 本身进行修改,默认保留 2.5 分钟到期时间,但引入额外的命令行参数以允许调整该到期时间,这将使其可用于您的特定用例。