systemd-homed 通过 luks2 加密用户主目录镜像并支持跨设备迁移,实现安全透明的 per-user 加密与便携管理;其镜像自包含元数据、支持 tpm2 双因子、标准化格式及 homectl 统一运维,显著优于传统方案。

systemd-homed 提供了一种将用户主目录与系统账户解耦、并原生支持加密和跨设备迁移的现代方案,相比传统 home 目录管理,它在安全性和便携性上确实有实质性提升。
主目录加密:基于 LUKS 的透明全盘加密
systemd-homed 默认使用 LUKS2 加密整个用户主目录镜像(一个稀疏文件或独立块设备),密钥由用户登录凭证(如密码或 PKCS#11 智能卡)派生,无需额外输入。加密在用户登录时自动解密、登出时自动锁定,对应用完全透明——所有文件 I/O 经由内核密钥环和 FUSE 层处理,用户无需修改任何脚本或配置。
- 加密粒度是整个 homedir 镜像,而非单个文件,避免了 eCryptfs 或 EncFS 的元数据泄露和性能开销
- 支持 TPM2 密钥绑定,可实现“物理设备+密码”双因子解锁
- LUKS2 标准兼容性强,镜像可被其他 linux 系统挂载解密(需知道密码和 keyslot),不锁定于 systemd 生态
可移植性:用户数据与宿主机完全分离
每个用户对应一个自包含的 homedir 镜像(默认位于 /var/lib/systemd/home),该镜像携带完整 UID/GID、POSIX 权限、ACL、扩展属性(xattrs)甚至 btrfs 子卷快照能力。这意味着你可以直接复制这个文件到另一台启用了 systemd-homed 的机器,运行 homectl import 即可复用全部配置和数据,无需手动同步 dotfiles、重建权限或修复路径依赖。
- 镜像格式标准化(目前为 ext4 或 btrfs 文件系统封装在 LUKS 容器中),不依赖特定发行版补丁
- 用户身份(UID/GID)在导入时可自动映射或强制指定,避免与目标系统 UID 冲突
- 支持网络后端(如 NFS 或 CIFS 挂载点作为 homedir 存储位置),实现集中式但加密的主目录托管
与传统方案的关键差异
不同于 ecryptfs(仅加密 $HOME 下特定子目录、元数据明文可见)、home Directory bind mount(无加密、权限易错配)或手动 LUKS + /home 分区(难以 per-user 管理、无法热迁移),systemd-homed 将用户生命周期管理(创建/删除/迁移/恢复)与存储抽象统一纳入 systemd 生态,通过 homectl 命令行工具即可完成全部操作,且所有行为受 systemd 日志和策略控制。
- 用户创建即生成加密镜像,无须 root 手动格式化分区或配置 PAM 模块
- 支持按需激活(on-demand activation),未登录用户的数据镜像保持离线加密状态,降低攻击面
- 可审计:每次登录/登出、镜像挂载/卸载均记录在 journal 中,含 UID 和设备路径