# 用户

> 用户页面的用户根节点、本地用户名册，以及设置一个用户显示名、角色和 PIN 的那块用户面板，包括主管理员和管理员 PIN 的恢复。

**用户**根节点底下，这台工作站的每一个本地用户各占一个节点。一个本地用户就是一个显示名，绑定到恰好一个角色上，外加一个可选的 PIN。这里没有密码、没有电子邮件地址，也没有按用户设置的权限：这个用户可以做什么全由角色决定，而用户是这个决定署名所用的那个名字。

这个根节点和它的子节点是给这条回路上的管理员用的（管理本地用户权限）。别的人看到的根节点不带计数、也没有子节点，打开它时看到的是那条叫人在当前登录底下或者在用户标记上以管理员身份登录的通知。唯一的例外是一台一个用户也没有的工作站，在那里这个根节点把首次设置提供给在试验台前的任何人（见[用户](users#first-use)）。

## 名册 {#the-roster}

打开用户根节点，看到的是**用户**卡片，上面写着“本工作站上有 {n} 个本地用户。每人持有一个角色，由角色决定他们可以做什么。”，每个用户一行，顺序就是工作站保存它们的顺序。

| 元素 | 它显示什么 |
| --- | --- |
| 头像和显示名 | 栏里、名册里和登录列表里所用的那个名字。 |
| 当前用户 | 加在这条回路上已登录用户身上的一个小块。 |
| 主管理员 | 加在首次设置所创建的那个主用户身上的一个小块。 |
| 副行 | “已设置 PIN”或者“未设置 PIN”，然后是“从未登录”“最近访问：今天”“最近访问：昨天”“最近访问：{n} 天前”，超过 60 天则是按工作站所配置格式写的日期。 |
| 行尾文字 | 这个用户持有的角色；那个角色已经不存在时是一个缺口标记。 |

点一行就在栏里打开那个用户的节点，读这个用户和改这个用户都在那里。创建一个用户是栏底部的**新建用户**（见[用户](users#new-and-the-column-footer)），新用户不会被打开：它的那一行在这个列表里突出显示并滚动到可见处；删掉一个是详情栏上的**移除用户**。

在栏里，每个用户节点后面跟着它那个角色的名字。

## 用户面板 {#the-user-panel}

一个用户的面板边做边保存，和应用里每一块面板一样：名称在离开字段时提交，角色在挑中的那一刻提交。这里没有保存按钮。选中的用户刚被另一幅界面删掉时，面板写着“该用户已经不在本工作站上。请在左栏另选一个。”运行时停止期间，这块面板根本不在：和除了[账户](account)之外的每一块屏幕一样，本页被那条暂停通知顶替（见[用户](users#what-the-page-does-not-do)）。

### 身份 {#identity}

| 字段 | 它是什么 | 取值 / 默认 | 效果 |
| --- | --- | --- | --- |
| 显示名称 | 左栏、名单和登录列表用来称呼这个人的名字。 | 最多 80 个字符；新用户一开始叫**新建用户**；名字留空则存为**用户**。 | 在离开字段时提交。操作记录条报出“已把该用户重命名为‘{name}’。”，用的是工作站实际存下来的那个名字。 |

卡片的抬头把头像、**当前用户**和**主管理员**两个小块，以及名册里 PIN 和最近访问那条副行，再写一遍。

### 角色 {#role}

| 字段 | 它是什么 | 取值 / 默认 | 效果 |
| --- | --- | --- | --- |
| 角色 | 授予这个用户权限的那个角色。 | 除未登录之外的每一个角色，未登录从不分配给任何人。从栏里创建的用户，在那份预置还在时从 Operator 起步。 | 立刻生效；操作记录条报出“‘{name}’现在持有 {role} 角色。”这个用户的各幅界面会在下一次按下时重新检查新角色，即使他还登录着。 |

挑选器下面，卡片读出这个角色够到多深：“可以改动 6 个功能区中的 {n} 个”（或者“仅查看”/“无权限”）以及带标签的权限范围条，和角色列表画的是同一幅剪影。角色已经被删掉时，卡片写着“这位用户的角色已经不存在，因此什么权限都没有。请选一个存在的角色。”角色没有了的用户会落到那个下限上：只有查看仪表画面，别的都没有。

对主管理员没有挑选器。卡片写出 Admin 角色，并说“主管理员：完全访问，并持有离线恢复密钥。它的角色是固定的，不能更改。”任何会把它降级的编辑，工作站都会拒绝。

### 登录 {#signing-in}

**登录方式**卡片以这位用户的状态开头：“这位用户登录时会被要求输入 PIN。”或者“这位用户轻触即可登录：没有设置 PIN。”PIN 是一条带着自己按钮的命令，不是一个自动保存的字段：半个 PIN 不是一个意图，而已经存下来的那个，绝不能被一次误敲替换掉。

| 字段或命令 | 它是什么 | 取值 / 默认 | 效果 |
| --- | --- | --- | --- |
| 设置 PIN / 更改 PIN | 输入新 PIN 的那个掩码输入框，占位文字“4 到 6 位数字”。 | 最多键入 6 个字符；不是数字的东西在检查之前就被丢掉。 | 在按下按钮之前什么也不发生。 |
| 设置 PIN / 更改 PIN（按钮） | 存下这个 PIN，加盐并散列。 | 剩下的数字少于 4 位时，在字段上以“PIN 是 4 到 6 位数字。”被拒绝。 | 操作记录条报出“已为‘{name}’设置 PIN。”（主管理员则是“管理员 PIN 已设置。”）。字段清空。 |
| 移除 PIN | 把 PIN 拿掉，于是下一次登录只是点一下。只有设了 PIN 时才显示，而且对主管理员从不显示。 | | 会先问一遍，用的是删除用户和删除角色所用的同一个窗口：“要移除‘{name}’的 PIN 吗？以这位用户身份登录将变成轻触一下即可，本工作站的每一块屏幕上、任何能连上它的浏览器里都一样。PIN 以后还可以再设，但这一个找不回来了。”按下移除之后，操作记录条报出“已移除‘{name}’的 PIN。以这位用户身份登录现在只需轻触一下。” |
| 忘记管理员 PIN 了？ | 只在主管理员上显示的一个链接，而且要等它的 PIN 设置之后才出现：正是设置这个 PIN 才铸出这个链接所要的恢复密钥。打开下面那套恢复流程。 | | |

字段下面那句提示说明 PIN 是什么：“可选，仅限本机，4 到 6 位数字。它只决定谁使用本工作站，不是防篡改的保护措施。”在主管理员上它写的是“4 到 6 位数字。设置 PIN 时会显示一次性的恢复密钥，请把它抄下来。”

在栏里换到另一个用户，会把这些字段里键入了一半的内容清掉，于是为某个人起草的 PIN 绝不会被套到下一个人身上。

## 主管理员 {#the-primary-administrator}

工作站有史以来的第一个用户，就是**主管理员**（那个主用户）：由**设置本地用户**创建，在你重命名之前叫**Administrator**，在 Admin 角色上，没有 PIN。正是它让这台工作站可治理、可恢复，所以关于它有三件事是固定的：

- 它不能被删除。**移除用户**在它身上一直变灰，理由是“主管理员必须保留：忘记管理员 PIN 时，正是它的恢复密钥能在登录界面上、无人登录的情况下把 PIN 重置。”
- 它的角色不能更改。它天生就是 Admin；面板上不显示挑选器。
- 它的 PIN 不能简单地删掉。设置或者更改它，正是它那把恢复密钥被铸出来的方式；一个完全没有 PIN 的主管理员，是首次设置留下的那种状态。

别的用户也可以放到 Admin 角色上，他们和主管理员一样管理用户与角色。他们缺的是那把恢复密钥。

### 恢复密钥 {#the-recovery-key}

设置或者更改主管理员的 PIN，会轮换它的恢复密钥，并在一个标题为**管理员恢复密钥**的窗口里显示新的那一把：

> 管理员 PIN 已设置。请把这个恢复密钥抄下来。它只显示这一次，也是离线重置忘记的管理员 PIN 的唯一办法：

这把密钥是十二个字符分成三组，例如 `ABCD-EFGH-JKLM`，取自一个不含容易混淆的 0、O、1、I 和 L 的字符表。它和 PIN 一样以散列存下来，而且再也不会显示第二次。这个窗口是本页上唯一一处不是滚动面板的东西，因为它绝不能被滚过去。

### 重置管理员 PIN {#resetting-the-admin-pin}

同一把钥匙有两扇门，而且它们要的恰好是同样两样东西。

在本页上，对一个已经登录的管理员，**忘记管理员 PIN 了？**把那些 PIN 字段换成恢复表单：

| 字段或命令 | 它是什么 | 效果 |
| --- | --- | --- |
| 恢复密钥 | 上一次设置 PIN 时抄下来的那把钥匙。大小写和前后空格都不要紧。 | |
| 新的 PIN | 掩码输入，4 到 6 位数字。 | 在字段上以“新的 PIN 必须是 4 到 6 位数字。”被拒绝。 |
| 重置 PIN | 校验这把钥匙，存下新 PIN，并轮换钥匙。 | 钥匙不对时留在字段上：“这个恢复密钥不对。”成功之后，操作记录条报出“管理员 PIN 已重置。”，窗口显示新的钥匙：“管理员 PIN 已重置。这是你新的恢复密钥（之前那个已经失效）：”。 |
| 取消 | 回到那些 PIN 字段，并把两个都清空。 | |

另一扇门是**登录界面**，而在 PIN 真的被忘掉时，要紧的正是它：在一台唯一的管理员被锁在门外的工作站上，本页根本打不开。在名册上挑中主管理员（标题栏上的那个标记，或者浏览器拿到的那张登录卡片），键盘底下就有**忘记 PIN 了？**。它要的是同一把恢复密钥和同一个新 PIN，用同样的话拒绝一把不对的钥匙，然后在单独一步上显示轮换出来的新钥匙，并带一个**完成**按钮，因为它只显示一次。谁也不必登录：钥匙本身就是授权，而这次重置和其他任何一次一样记入日志。

恢复是分层的，而且不需要网络：一个管理员从某个用户自己的面板上重置那个用户的 PIN；主管理员自己的 PIN 用恢复密钥重置，从登录界面或者从这里；两样都丢了，那条回来的路是还原一份配置备份（见[备份](settings-backups)）。这里有意不设“清空访问控制”的按钮。

## 用户存在哪里 {#where-users-are-stored}

用户、角色、PIN 的散列和恢复密钥的散列，都住在工作站的配置数据库里，不带任何绑定机器的密钥，所以它们随一份配置备份一起走，也能在换到另一台电脑之后照样有效，完全离线。

## 这块面板不做什么 {#what-the-panel-does-not-do}

- 它不给某个用户设置权限。请到[角色](users-roles)底下改那个角色，持有它的每一个用户会一下子跟着变。
- 它不显示、也不找回明文 PIN。存下来的只有散列；忘掉的 PIN 是被替换掉，绝不是被读回来。
- 它不把这个用户登录进去。那是[当前登录](users-signed-in)这个根节点和标题栏上的那个标记；见[登录](users-signing-in)。
- 运行时停止期间，无论在工作站窗口还是在任何浏览器里，它都不画出来：本页被那条暂停通知顶替，所以在运行时重新启动之前，既不能创建、重命名用户或把用户换到另一个角色，也不能给用户设置或去掉 PIN。登录仍然可以从标题栏上的用户小块进行，但通过登录界面上的**忘记 PIN 了？**来重置会改动工作站，同样被拒绝。
- 它不删除主管理员，也不创建第二个主管理员。
