当前位置: 首页 > 文档资料 > systemd 中文手册 >

systemd-ask-password 中文手册

优质
小牛编辑
133浏览
2023-12-01

名称

systemd-ask-password — 向用户索要密码

大纲

systemd-ask-password [OPTIONS...] [MESSAGE]

描述

systemd-ask-password通过向用户显示 [MESSAGE] 消息的方式索要密码或口令。当在TTY上运行时,它将从TTY读取密码,然后再将密码打印到标准输出。当不在TTY上运行或使用 --no-tty 选项时,它将使用全系统通用的密码查询机制,从而允许活动用户通过多种密码代理进行应答(参见下文)。

此工具主要用于向全系统范围索要不特定于某个账户的密码。例如:用于解开加密硬盘的密码、用于解开SSL证书的口令(常用于HTTP/VPN服务器)。

目前可用的密码代理如下:

  • 一个显示启动动画的工具,亦可用作启动时密码代理:plymouth(8)

  • 启动时直接在控制台上向用户索要密码的密码代理:systemd-ask-password-console.service

  • 通过wall(1)消息获取密码的密码代理:systemd-ask-password-wall.service

  • 可配合systemctl(1)命令临时启动的TTY密码代理

  • 能够被临时启动以处理一系列连续请求的命令行密码代理:systemd-tty-ask-password-agent --query

因为回答全系统通用的密码查询是一个特权操作,所以上述所有密码代理(最后一个除外)都只能用于拥有特权的系统服务。注意,因为最后一个密码代理实际上也需要较高的权限,所以在实践中应该使用例如sudo(8)这样的方式来运行。

此外,还可以根据 systemdPassword Agent Specification 规范编写其他类型的密码代理。

在TTY上输入密码时,用户可以按一下TAB键,这样在输入密码时就不会显示星号。在开始输入密码前按退格键(Backspace)也有同样的效果。

选项

能够识别的命令行选项如下:

--icon=

在询问密码的同时显示一个图标,仅用于图形界面的密码代理。图标名称必须遵守 XDG 图标命名规范

--id=

为此次密码索要动作指定一个标识符,以辨别此密码适用于密码代理的哪个请求。其中必须包含 请求密码的子系统以及密码的作用对象。例如: "--id=cryptsetup:/dev/sda5"

--keyname=

指定一个 用于缓存密码的内核密钥环(keyring)名称。设置此选项表示 尽可能将收集到的密码缓存到指定的内核密钥环(keyring)中(该密钥环必须属于root用户)。若与 --accept-cached 一起使用,则表示 首先从指定的内核密钥环缓存中查找所需密码,仅在找不到的情况下才提示用户输入,这样当多个对象都使用同一个密码时,就可以避免让用户反复输入同一个密码。密码的缓存有效期是2.5分钟,超时后将被删除。同一个内核密钥环中可以缓存多个密码。可以使用 keyctl(1) 工具访问内核密钥环中缓存的密码。例如: "--keyname=cryptsetup"

--timeout=

设置等待用户输入密码的最大时长。默认"90s",设为"0"表示无限等待。

--echo

直接显示用户的输入 (而不是显示为星号或者不显示),常用于输入 无需保密的用户名。

--no-tty

不在当前TTY上读取密码(即使当前TTY可用),而是从密码代理读取密码。

--accept-cached

允许从密码缓存中查找 先前曾经输入过的密码。

--multiple

--accept-cached 连用,表示可以接收多个密码(每行输出一个密码)。

--no-output

不在标准输出上打印密码。此选项常用于 仅希望将密码存储到内核密钥环中(--keyname),而不希望显示在屏幕上或记录到日志中。

-h, --help

显示简短的帮助信息并退出。

退出状态

返回值为 0 表示成功,非零返回值表示失败代码。

参见

systemd(1),systemd-ask-password-console.service(8),systemd-tty-ask-password-agent(1),keyctl(1),plymouth(8),wall(1)