引入了 systemd-homed 来管理便携式主目录

伦纳特·珀特林 提交 (PDF)在 All Systems Go 2019 大会上,系统管理器 systemd 的新组件 - 系统宿主,旨在使用户主目录可移植并与系统设置分开。 该项目的主要思想是为用户数据创建自给自足的环境,可以在不同系统之间传输,而无需担心标识符同步和机密性。

主目录环境以已安装映像文件的形式出现,其中的数据已加密。 用户凭据与主目录而不是系统设置相关联 - 而不是 /etc/passwd 和 /etc/shadow 轮廓 JSON格式,存储在~/.identity目录下。 配置文件包含用户工作所需的参数,包括有关名称、密码哈希、加密密钥、配额和分配资源的信息。 该配置文件可以通过存储在外部 Yubikey 令牌上的数字签名进行认证。

参数还可能包括附加信息,例如 SSH 密钥、生物识别身份验证数据、图像、电子邮件、地址、时区、语言、进程和内存限制、附加安装标志(nodev、noexec、nosuid)、有关使用的用户 IMAP/SMTP 服务器的信息、有关启用家长控制、备份选项等的信息。 提供API来请求和解析参数 瓦林克.

UID/GID 分配和处理是在主目录所连接的每个本地系统上动态完成的。 使用所提出的系统,用户可以随身携带他的主目录,例如在闪存驱动器上,并在任何计算机上获得工作环境,而无需在其上显式创建帐户(存在带有主目录图像的文件)导致用户的综合)。

建议使用 LUKS2 子系统进行数据加密,但 systemd-homed 还允许使用其他后端,例如用于未加密的目录、Btrfs、Fscrypt 和 CIFS 网络分区。 为了管理可移植目录,建议使用 homectl 实用程序,它允许您创建和激活主目录的映像,以及更改其大小和设置密码。

在系统层面,工作由以下组件保证:

  • systemd-homed.service - 管理主目录并将 JSON 记录直接嵌入到主目录图像中;
  • pam_systemd - 当用户登录时处理来自 JSON 配置文件的参数,并将它们应用到激活的会话的上下文中(执行身份验证、配置环境变量等);
  • systemd-logind.service - 当用户登录时处理来自 JSON 配置文件的参数,应用各种资源管理设置并设置限制;
  • nss-systemd - glibc 的 NSS 模块,基于 JSON 配置文件合成经典的 NSS 记录,提供与 UNIX 用户处理 API (/etc/password) 的向后兼容性;
  • PID 1 - 动态创建用户(通过使用 DynamicUser 指令以单位进行类比合成)并使它们对系统的其余部分可见;
  • systemd-userdbd.service - 将 UNIX/glibc NSS 帐户转换为 JSON 记录,并提供统一的 Varlink API 用于查询和迭代记录。

所提出的系统的优点包括以只读模式挂载 /etc 目录时管理用户的能力、无需在系统之间同步标识符 (UID/GID)、用户独立于特定计算机、阻止用户数据在睡眠模式下,使用加密和现代身份验证方法。 Systemd-homed 计划在版本 244 或 245 中纳入 systemd 主流。

JSON 用户配置文件示例:

“自动登录”:正确,
“捆绑” : {
«15e19cd24e004b949ddaac60c74aa165» : {
“文件系统类型”:“ext4”
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
“gid”:60232,
"homeDirectory" : "/home/test",
"imagePath" : "/home/test.home",
“luksCipher”:“aes”,
“luksCipherMode”:“xts-plain64”,
«luksUUID» : «e63581ba-79fa-4226-b9de-1888393f7573»,
“luksVolumeKeySize”:32,
«partitionUUID» : «41f9ce04-c927-4b74-a981-c669f93eb4dc»,
“存储”:“卢克斯”,
“uid”:60233
}
},
“处置”:“常规”,
“enforcePasswordPolicy”:假,
“最后更改USec”:1565951024279735,
“成员” : [
“车轮”
],
“特权”:{
“哈希密码”:[
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
“签名” : [
{
“数据”:“LU/HeVrPZSzi3M3J...==”,
"key" : "——开始公钥——\nMCowBQADK2VwAy…=\n——结束公钥——\n"
}
],
“用户名”:“测试”,
“地位” : {
«15e19cf24e004b949dfaac60c74aa165» : {
“良好的身份验证计数器”:16,
“最后的GoodAuthenticationUSec”:1566309343044322,
“rateLimitBeginUSec”:1566309342341723,
“速率限制计数”:1,
“状态”:“不活动”,
“服务”:“io.systemd.Home”,
“磁盘大小”:161218667776,
“磁盘天花板”:191371729408,
“磁盘层”:5242780,
“本地签名”:true
}
}

来源: opennet.ru

添加评论