使用 systemd-homed 管理 Linux 用户的主目录
系统管理员可以使用 systemd-homed 服务对漫游用户的主目录进行安全管理。
自从它开始取代旧的 SystemV 启动和初始化工具以来,整个 systemd 概念和实现已经引入了许多变化。随着时间的推移,systemd 已经扩展到 Linux 环境的许多其他部分。
一项相对较新的服务 systemd-homed 将 systemd 的范围扩展到用户主目录的管理。该功能仅强制人类用户访问,并将系统用户限制在 0 到 999 之间的用户 ID (UID) 范围内。我支持 systemd 接管世界的计划,但我想知道这是否有点过分。然后我做了一些研究。
什么是 systemd-homed?
systemd-homed 服务支持独立于底层计算机系统的用户帐户可移植性。一个实际的例子是将您的主目录放在 USB 拇指驱动器上,并将其插入任何可以自动识别并安装它的系统。 systemd 的首席开发人员 Lennart Poettering 表示,除非用户登录,否则任何人都不应允许访问用户的主目录。systemd-homed 服务旨在增强安全性,特别是对于笔记本电脑等移动设备。它似乎也是一个可能对容器有用的工具。
仅当主目录包含所有用户元数据时才能实现此目标。 ~/.identity 文件存储用户帐户信息,只有输入密码后 systemd-homed 才能访问该信息。该文件包含所有帐户元数据,包括 Linux 需要了解的有关您的所有信息,以便主目录可移植到任何使用 systemd-homed 的 Linux 主机。这种方法可以防止您在可能需要使用的每个系统上都拥有一个带有存储密码的帐户。
主目录也可以使用您的密码进行加密。在 systemd-homed 下,您的主目录存储您的密码以及所有用户元数据。您的加密密码不会存储在其他任何地方,因此任何人都无法访问。尽管现代 Linux 系统用于加密和存储密码的方法被认为是牢不可破的,但最好的保护措施是首先防止它们被访问。对自身安全无懈可击的假设导致许多人破产。
该服务主要用于笔记本电脑等便携式设备。 Poettering 表示,“Homed 主要用于客户端计算机,即笔记本电脑,因此如果您遵循我的意思,您通常可以通过 ssh 访问的机器比通过 ssh 访问的机器多得多。”它不适用于通过电缆连接到单个位置或锁定在服务器机房中的服务器或工作站。
systemd-homed 服务在新安装时默认启用——至少对于我使用的发行版 Fedora 来说是这样。此配置是设计使然,我预计不会改变。在具有现有文件系统、保留现有分区和逻辑卷的升级或重新安装的系统上,用户帐户不会受到任何影响或更改。
创建受控用户
useradd
等传统工具创建 systemd-homed 不管理的帐户和主目录。因此,如果您继续使用传统的用户管理工具,您的主目录上的主目录将不再由systemd-homed管理。在新安装期间创建的非根用户帐户也是如此。
homectl 命令
homectl
命令创建 systemd-homed 管理的用户帐户。使用 homectl 命令创建新帐户会生成使主目录可移植所需的元数据。
homectl
命令手册页很好地解释了 systemd-homed 服务的目标和功能。然而,阅读 homectl
手册页非常有趣,尤其是示例部分。在这五个示例中,其中三个展示了如何创建具有特定限制的用户帐户,例如最大并发进程数或最大磁盘空间量。
在非 homectl 设置中, /etc/security/limits.conf
文件施加这些限制。我能看到的唯一优点是它添加了用户并使用单个命令应用限制。使用传统方法,系统管理员必须手动配置 limits.conf
文件。
局限性
我知道的唯一重要限制是无法使用 OpenSSH 远程访问用户主目录。此限制是由于 PAM 当前无法提供对 homectl
管理的主目录的访问。珀特林似乎对能否克服这一问题表示怀疑。这个问题将阻止我在我的主工作站甚至笔记本电脑上使用 systemd-homed 作为我的主目录。我通常每天使用 SSH 多次远程登录两台计算机,所以这对我来说是一个令人震惊的事情。
我看到的另一个问题是,您仍然需要一台 Linux 计算机来使用带有主目录的 USB 拇指驱动器,并且该计算机需要运行 systemd-homed。
这是可选的
但是,您不必使用它。我计划继续使用传统的用户管理工具来支持我的工作流程。我不太了解的几个发行版(包括 Fedora)的默认设置是启用并运行 systemd-homed 服务。 您可以禁用和停止 systemd-homed 服务,而不会影响传统用户帐户。
最后的想法
系统管理员可以使用 systemd-homed 服务对漫游用户的主目录进行安全管理。它在笔记本电脑等便携式设备上非常有用,对于携带仅包含主目录的拇指驱动器并将其插入任何方便的 Linux 计算机的用户尤其有用。
使用 systemd-homed 的主要限制是无法使用 SSH 远程登录。即使默认情况下启用 systemd-homed,它也不会影响使用 useradd
命令创建的主目录。我确实需要指出,与许多 systemd 工具一样,systemd-homed 是可选的。所以我只是停止并禁用该服务。
如果我需要将我的主目录放在比我的笔记本电脑更小的包中,我可以使用带有持久存储的实时 USB。
资源
- https://systemd.io/HOME_DIRECTORY/
- https://www.freedesktop.org/software/systemd/man/homectl.html
- https://www.freedesktop.org/software/systemd/man/systemd-homed.service.html
- https://wiki.archlinux.org/title/Systemd-homed