又到了我们定期从 YaST 前线发来的消息。但这次我们不想像往常一样介绍多个主题,而是想专注于一个最终登陆 openSUSE Tumbleweed 的功能,经过几个月的开发。有趣的是,尽管付出了所有的努力,但对于大多数最终用户来说,这是一个不太明显的功能。
管理本地用户并非那么简单
事实上,历史上 YaST 从未使用 useradd 和类似工具来创建、修改和删除用户和组。相反,它过去会自行执行系统中的所有更改,例如创建主目录、分配 ID 或修改文件 /etc/passwd、/etc/groups 等。
你可能会认为 Linux 中用户和组的管理随着时间的推移并没有太大变化。毕竟,我们仍然使用传统的 Unix 方法来管理本地用户。但现实是,自从 YaST 诞生以来,useradd 已经发生了很大的变化
- 它在从 (open)SUSE 11 升级到 (open)SUSE 12 时被彻底重写,传统上在
pwdutils包中可用的useradd的实现被shadow包中的替代方案所取代。 - 它改变了创建骨架目录的方式,采用了一种更精细的方法,可以从多个位置复制文件,而不仅仅是传统的
/etc/skel。 - 它增加了对 subuids 和 subgids 的管理,这是运行无 root 容器所需的功能。
- 它更改了配置文件的位置,一些属性从
/etc/defaults/useradd中移除,要么移动到不同的文件,要么直接消失。
所有这些更改都逐渐合并到 useradd 和其他相关工具中,而没有将 YaST 考虑在内,因此这些工具的行为多年来已经发生了偏差。这过去已经造成了一些问题,并且将来可能会造成更多问题。因此 YaST 团队决定是时候弥合差距了。
有什么新变化
从本周提交给 Tumbleweed 的 YaST 版本开始,YaST 现在在安装期间以及使用 AutoYaST 或 YaST Firstboot 创建用户和组时,依赖于 useradd、groupadd 和其他 shadow 工具。我们还调整了 AutoYaST 配置文件中 <user_defaults> 部分的管理,使其与最新版本的 useradd 保持一致。该区域的更改意味着放弃对某些属性的支持,例如 <groups>、<no_groups> 和 <skel>。请参阅 此拉取请求的描述,了解每个更改的理由和历史背景。
作为一种面向开发者的附加曲目,值得注意的是 YaST 现在提供了一个新的面向对象 API 来读取和管理本地用户(所谓的 Y2Users),并使用了一种新的机制向用户报告错误 (Y2Issues,目前正在 YaST 的其他部分中采用)。
接下来会发生什么
如前所述,这些更改会影响安装过程、AutoYaST 和 YaST Firstboot。但是,如果您运行交互式 YaST 模块来管理用户和组或 YaST 的命令行界面(并非完全维护),则旧代码仍然存在。我们计划在接下来的几周内将这两者与新的实现连接起来,以便所有可能的 (Auto)YaST 用法都能获得完全一致的用户体验。
当然,新的实现为更深层次的更改打开了大门,这些更改会影响 YaST 用户界面或非本地用户(LDAP、Samba、NIS…)的管理。但坦率地说,我们目前不打算在中期内走那么远。我们计划将我们的火力集中在其他目标上,现在用户管理工具中的不一致性造成的威胁已经得到控制。
更多新闻即将到来
当然,我们在过去的冲刺中在许多其他领域工作过,并且将来也会继续这样做。因此,我们将很快带着更多新闻以及可能包含多个主题的更标准的帖子回来。敬请期待,我们将在几周后与您见面!