这就是我想做的。使用autofs在访问目标目录时自动挂载加密的luks镜像文件。
我一直在使用 fstab 和 crypttab,但没有运气。
我不想使用密钥文件来解密它。尝试查询目标挂载文件夹/加密时,应出现密码提示窗口。 cryptsetup 应该挂载位于 /secret/data.img 的文件,该文件是 LUKS 格式的文件,解密后包含 ETX4 文件系统。然后,该文件系统应安装在 /encrypted 处,但前提是提示用户输入其密码。
额外的问题,经过一段时间的空闲(超时)不活动后,autofs 应该关闭 luks 卷,以便进一步访问需要重新输入密钥。
这可以做到吗?
这是我当前的 fstab 和 crypttab。
--FSTAB--
UUID=11111111-2222-3333-4444-555555555555 /encrypted ext4 defaults,auto,x-systemd.automount,uid=1234,gid=1234,cache=no,rw 0 0
--CRYPTTAB--
trust-no-1 /secret/data.img none auto,rw
不存在同时包含 autofs 和 luks 关键字的问题。这可能吗?
答案1
x-systemd.automount
当您在 中指定选项时/etc/fstab
,您实际上是在调用创建 systemd.automount
单元。它提供自动挂载功能,但与经典子系统完全无关autofs
。
问题是,经典的autofs
和较新的 systemd.automount
单元都不是用户会话(或任何交互式会话)的一部分,因此它们无法轻松显示密码提示。您需要一个服务,该服务具有用于实际执行安装的系统部分,以及作为用户会话的一部分运行的用户界面组件。诸如 D-Bus 之类的东西可用于它们之间的通信。
udisks
将是最接近的现有解决方案,但我不确定它是否会尝试以您设想的方式处理加密的图像文件。即使这样做,也需要安装点/encrypted
与加密映像相关联的信息/secret/data.img
。但是系统上可以有多个用户:每当有人尝试访问时,为任何人/每个人弹出一个密码输入对话框/encrypted
会向所有用户显示系统上存在加密的内容,这在某些情况下是不可取的......
您的fstab
和组合crypttab
不可能满足您的要求,因为fstab
它是通过文件系统 UUID 引用加密图像...但在加密解锁之前,该文件系统 UUID 是看不到的。因此,基于该fstab
行生成的自动挂载单元将在激活时发现不存在具有该 UUID 的文件系统,并得出结论:设备丢失或线路上存在错误fstab
。
没有任何东西可以作为该crypttab
行与该行相关的线索fstab
:只有在加密解锁后才能发现这两条配置行之间的连接。
该crypttab
选项auto
似乎还不是标准的(还?)。它的相反,noauto
,存在于 Debian 中(至少),但这意味着在系统启动过程中应该忽略加密的设备/映像。因此,通过扩展,auto
意味着“在系统启动过程中激活此 crypttab 条目”,这是默认设置......并且与您想要发生的情况相反。如果您的(未指定)发行版以其他方式定义了此关键字,那么您将不得不依赖特定于发行版的文档;我无法猜测该选项的确切技术含义。