进一步阅读

进一步阅读

我应该如何使用systemd-ask-password-console.service?我的目标是触发密码提示并要求输入一些终端。

目前我正在尝试这样:

  1. 开始systemd-ask-password-console.service
  2. 确保没有其他密码代理正在运行:ps aux | grep ask
  3. 确保没有启动其他密码代理:systemctl status systemd-ask*
  4. 执行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 在他的回答

进一步阅读

答案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)已经从控制台读取时,不可能从控制台可靠地读取。更具体地说,用户输入将仅传递到一个进程,并且您无法猜测那将是哪个进程。

相关内容