我应该如何使用systemd-ask-password-console.service
?我的目标是触发密码提示并要求输入一些终端。
目前我正在尝试这样:
- 开始
systemd-ask-password-console.service
。 - 确保没有其他密码代理正在运行:
ps aux | grep ask
- 确保没有启动其他密码代理:
systemctl status systemd-ask*
- 执行
systemd-ask-password --no-tty "Password:"
以触发密码代理。
步骤3等待代理返回密码,最后超时。同时可以在 中看到该请求/run/systemd/ask-password/
。
systemctl status systemd-ask-password-console.service
显示:
● systemd-ask-password-console.service - Dispatch Password Requests to Console
Loaded: loaded (/lib/systemd/system/systemd-ask-password-console.service; static; vendor preset:
Active: active (running) since Fri 2018-05-11 16:46:43 CEST; 6min ago
Docs: man:systemd-ask-password-console.service(8)
Main PID: 392 (systemd-tty-ask)
Tasks: 2 (limit: 4915)
CGroup: /system.slice/systemd-ask-password-console.service
├─392 /bin/systemd-tty-ask-password-agent --watch --console
└─393 /bin/systemd-tty-ask-password-agent --watch --console=/dev/tty1
May 11 16:46:43 debian systemd[1]: Started Dispatch Password Requests to Console.
我希望正在运行的代理处理请求和它将使用一些终端(例如终端1) 询问密码。
我做错了什么?
答案1
我应该如何使用 systemd-ask-password-console.service?
长话短说,你不是。
systemd-ask-password-console.service
(8).path
当有人提出询问密码请求时,通过其相应的单元自动启动。询问密码代理旨在同时启动,最先到达用户的代理“获胜”。
我希望正在运行的代理处理该请求,并且它将使用某个终端(例如 tty1)来询问密码。
这是对的。然而,它不会要求在“任何”终端上输入,这在当前的 Linux 中几乎是不可能的,原因@sourcejedi 在他的回答。
进一步阅读
- 《密码代理》。系统文档。 freedesktop.org。
答案2
systemd-ask-password-console.service 是一项系统服务,用于在控制台上向用户查询系统密码(例如硬盘加密密钥和 SSL 证书密码)。它的目的是用来启动期间以确保正确处理启动所需的密码。 systemd-ask-password-wall.service 是一项系统服务,它通过 wall(1) 通知所有登录用户提供系统密码。它的目的是用来开机后以确保用户得到适当的通知。
https://www.freedesktop.org/software/systemd/man/systemd-ask-password-console.service.html
sh
因为当另一个进程(或login
)已经从控制台读取时,不可能从控制台可靠地读取。更具体地说,用户输入将仅传递到一个进程,并且您无法猜测那将是哪个进程。