crypttab 中文手册

译者:金步国


版权声明

本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。

其他作品

本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:

联系方式

由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。


手册索引 . 指令索引systemd-235

名称

crypttab — 加密块设备配置

大纲

/etc/crypttab

描述

/etc/crypttab 文件用于描述 在系统启动过程中创建的加密块设备(加密卷)。

空行以及以井号"#"开头的行将被忽略。 其余每一行描述一个加密块设备(加密卷)。 不同字段之间使用空白符分隔。

每一行都遵守如下格式:

name encrypted-device password options

每一行的前两个字段是必须存在的字段,而其余的字段则是可选字段(也就是可以省略)。

使用此文件创建的加密卷支持三种不同的加密模式(LUKS, plain, TrueCrypt)。 参见 cryptsetup(8) 手册以了解这三种模式的详细信息。 如果没有在第四个字段(选项字段)中明确指定加密模式,那么: 如果块设备包含一个 LUKS 签名,那么使用 LUKS 加密模式, 否则使用 plain 模式(也就是原始 dm-crypt 格式)。 [译者注]因为 TrueCrypt 存在安全漏洞并且已经在2014年停止开发,所以切勿再使用此种加密模式。

第一个字段(必须)是加密卷的映射名称, 也就是映射在 /dev/mapper/ 目录下的设备名称。

第二个字段(必须)是加密卷自身。可以是下列三者之一:(1)加密卷所在底层块设备的绝对路径;(2)加密卷所在底层 loop 文件的绝对路径; (3)以 "UUID=00112233-4455-6677-8899-aabbccddeeff" 格式表示的LUKS加密卷的UUID值(可以使用 cryptsetup luksUUID device 命令显示LUKS加密卷的UUID值)。

第三个字段(可选)是加密卷的密码文件。 密码文件必须以绝对路径表示,并且其中仅包含用于解开加密卷的密码。 如果省略此字段或者设为特殊值 "none" 或 "-" , 那么就表示在系统启动过程中手工输入解密密码。 对于 swap 加密卷,建议使用 /dev/urandom/dev/hw_random 作为密码文件。 最好不要使用 /dev/random 作为密码文件,否则系统有可能因为无法产生足够的随机数而不能完成启动。

第四个字段(可选)是逗号分隔的加密卷选项。 可以识别的选项如下:

cipher=

指定加密算法。 cryptsetup(8) 手册中列出了此选项的所有可用值以及默认值。 建议使用带有不可预测的初始化向量值的加密算法(例如 "aes-cbc-essiv:sha256")。

discard

允许透过加密卷向底层块设备传递 discard 请求。 此选项可以提高 SSD 的性能,但是对安全性有不利影响。

hash=

指定用于哈希密码的散列算法。 参见 cryptsetup(8) 手册以了解此选项的取值范围以及默认值。

header=

指定额外存储LUKS头信息的元数据设备或文件。 此选项仅可用于 LUKS 设备。 参见 cryptsetup(8) 手册以了解此选项的取值范围以及默认值。

keyfile-offset=

从密钥文件头部跳过多少字节。 参见 cryptsetup(8) 手册以了解此选项的取值范围以及默认值。

keyfile-size=

最多从密钥文件中读取多少字节。 参见 cryptsetup(8) 手册以了解此选项的取值范围以及默认值。 plain 模式将会忽略此选项,直接使用密钥的大小(size=)。

key-slot=

使用特定编号的密钥槽内的密钥。 如果指定槽位内的密钥不匹配,那么即使其他槽位内的密钥能够匹配,加密设备也会安装失败。 此选项隐含了 luks 选项。 参见 cryptsetup(8) 手册以了解此选项的取值范围。 默认是按密钥槽的编号依次尝试所有密钥。

luks

强制使用 LUKS 加密模式。 使用此选项之后,cipher=, hash=, size= 选项将被忽略,因为它们将由设备上的"LUKS头"提供。

_netdev

将底层块设备标记为网络块设备。 也就是必须在网络可用之后才能启用此设备。类似于带有 _netdev 标记的 systemd.mount(5) 单元。用于启用此设备的服务单元将被安排在 remote-cryptsetup-pre.targetremote-cryptsetup.target 之间启动(而不是在 cryptsetup-pre.targetcryptsetup.target 之间)。

noauto

不在系统启动时自动解锁(解密)。

nofail

系统启动时不等待此设备的出现,也不等待它完成解锁(解密)。 也就是说此加密卷的故障不会导致启动失败。

offset=

使用底层块设备的起点偏移量(以512字节的扇区为单位)。 此选项仅可用于 plain 模式(也就是原始 dm-crypt 格式)的加密卷。

plain

强制使用 plain 加密模式(也就是原始 dm-crypt 格式)。

read-only, readonly

以只读模式使用加密卷。

skip=

从加密数据头部跳过多少个512字节的扇区。 此选项与 offset= 的不同之处在于, 此选项已经将初始化向量所使用的扇区考虑在内。 使用 offset= 选项将会把初始化向量向后平移指定的距离。 所以,如果设置了 offset=n , 那么底层块设备的 n 号扇区对于初始化向量的计算来说,就是 0 号扇区。 对于 offset=n 来说, 底层块设备的 n 号扇区对应着映射设备的 0 号扇区, 而初始化向量的生成将从 n 号扇区开始。

此选项仅可用于 plain 模式(也就是原始 dm-crypt 格式)的加密卷。

size=

指定密钥的比特大小(注意,不是字节大小)。参见 cryptsetup(8) 手册以了解此选项的取值范围以及默认值。

swap

将加密卷用作swap设备。 这将在安装好加密卷之后自动使用 mkswap(8) 对映射后的设备进行格式化。 此选项隐含了 plain 选项。

警告:使用 swap 选项将会导致在每次系统启动过程中都彻底擦除底层加密块设备上的数据。 所以必须确保正确的设置了第二个字段。

tcrypt

强制使用 TrueCrypt 加密模式(强烈反对使用此模式)。 使用此模式之后, 下面的选项将被忽略(因为没有意义或已被包含在设备上的 TrueCrypt 头部之中): cipher=, hash=, keyfile-offset=, keyfile-size=, size=

When this mode is used, the passphrase is read from the key file given in the third field. Only the first line of this file is read, excluding the new line character.

Note that the TrueCrypt format uses both passphrase and key files to derive a password for the volume. Therefore, the passphrase and all key files need to be provided. Use tcrypt-keyfile= to provide the absolute path to all key files. When using an empty passphrase in combination with one or more key files, use "/dev/null" as the password file in the third field.

tcrypt-hidden

使用隐藏的 TrueCrypt 卷。此选项隐含了 tcrypt 选项。

This will map the hidden volume that is inside of the volume provided in the second field. Please note that there is no protection for the hidden volume if the outer volume is mounted instead. See cryptsetup(8) for more information on this limitation.

tcrypt-keyfile=

Specifies the absolute path to a key file to use for a TrueCrypt volume. This implies tcrypt and can be used more than once to provide several key files.

See the entry for tcrypt on the behavior of the passphrase and key files when using TrueCrypt encryption mode.

tcrypt-system

Use TrueCrypt in system encryption mode. This option implies tcrypt.

tcrypt-veracrypt

Check for a VeraCrypt volume. VeraCrypt is a fork of TrueCrypt that is mostly compatible, but uses different, stronger key derivation algorithms that cannot be detected without this flag. Enabling this option could substantially slow down unlocking, because VeraCrypt's key derivation takes much longer than TrueCrypt's. This option implies tcrypt.

timeout=

等待输入密码的最大时长。 默认的时间单位是秒,但是也可以明确的使用 ms, s, min, h, d 单位后缀。 默认值 0 表示永不超时。

tmp

将此加密卷用作 /tmp 挂载点的底层设备。 这将在安装好加密卷之后自动使用 mke2fs(8) 对映射后的设备进行格式化。 此选项隐含了 plain 选项。

警告:使用 tmp 选项将会导致在每次系统启动过程中都彻底擦除底层加密块设备上的数据。 所以必须确保正确的设置了第二个字段。

tries=

允许用户最多输入几次密码。 默认值是 3 。设为 0 表示允许无限次。

verify

如果从控制台读取密码,那么用户必须两次输入相同的密码,以防止偶然的按键错误。

x-systemd.device-timeout=

在放弃此加密卷之前,要求 systemd 等待此加密卷出现的最大时长。 默认的时间单位是秒,但是也可以明确的使用 "ms", "s", "min", "h" 单位后缀。

在系统启动的早期阶段,以及 systemd 重新加载其自身配置的时候,该文件将被 systemd-cryptsetup-generator(8) 转化为本地单元。

例子

例 1. /etc/crypttab 实例

设置了四个加密卷。两个基于普通块设备的 LUKS 加密卷(第二个位于SSD上)、 一个基于 loop 文件的 LUKS 加密卷、 最后一个是加密的交换分区。

luks       UUID=2505567a-9e27-4efe-a4d5-15ad146c258b
sdb1_crypt /dev/sdb1          none               luks,discard
loopluks   /srv/loop_luks
swap       /dev/sda7          /dev/urandom       swap

参见

systemd(1), systemd-cryptsetup@.service(8), systemd-cryptsetup-generator(8), cryptsetup(8), mkswap(8), mke2fs(8)