sysusers.d 中文手册

译者:金步国


版权声明

本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。

其他作品

本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:

联系方式

由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。


手册索引 . 指令索引systemd-231

名称

sysusers.d — 声明需要分配的系统用户与组

大纲

/usr/lib/sysusers.d/*.conf

描述

systemd-sysusers 工具根据 sysusers.d 目录中的配置文件的指引, 在安装软件包或系统启动时创建系统用户与组。 因为 systemd-sysusers 工具直接操作 /etc/passwd/etc/group 文件,所以仅可用于创建系统用户与组, 而不可用于创建非系统用户或组(比如基于 NIS 或 LDAP 的用户数据库)。

配置文件格式

每个配置文件都必须按照 package.confpackage-part.conf 格式命名。 当需要明确的将某部分(part)配置提取出来,以方便用户专门针对这部分进行修改的时候, 应该使用第二种命名格式。

配置文件的格式是每行对应一个用户或组,包含如下字段: 类型, 名称, ID, 简要描述, 家目录

# Type Name    ID               GECOS                   Home
  u    root    0                "Superuser"             /root
  u    httpd   440              "HTTP User"
  u    authd   /usr/bin/authd   "Authorization user"
  g    input   -                -
  m    authd   input

类型(Type)

"类型"字段仅包含一个单独的字母。 可以识别的类型如下:

u

按照"名称"字段的值, 创建一个系统用户以及一个同名的组, 并将此用户的主组设为此同名组, 用户的家目录将被设为 "家目录"字段的值(若未设置则设为 / )。 此账户创建后将处于禁用状态, 因此用户的shell也将被设为 /sbin/nologin 以禁止登录。

g

按照"名称"字段的值创建一个系统组, 并且不设组密码。注意,前面的 u 隐含的会创建一个与用户名称相同的组, 并且不设组密码。

m

将"名称"字段指定的用户添加到"ID"字段指定的组里。 如果指定的用户或组不存在, 则自动创建它。

r

向 UID/GID 分配池中添加一段可分配号段。 若不存在此行, 则使用编译时的默认值。 注意, 为了尽量确保同名的用户/组拥有相同的UID/GID, UID与GID都是从同一个号段池子中分配的。

名称(Name)

"名称"字段指定了用户或组的名字。 仅可包含常规ASCII字符, 长度不超过31个字符, 且不能以数字开头。 强烈建议使用不易发生冲突的名字, 例如避免使用常见的名字 并且在名字前加上"_"前缀。

对于 m 来说, 此字段是将要被添加到指定组中的用户名。

对于 r来说, 此字段必须被设为 "-"

ID

对于 ug 来说,此字段是一个32位十进制UID/GID数字。 不要使用 65535 或 4294967295 两个值,因为这是两个有特殊含义的占位符。 设为 "-" 表示使用自动分配的UID/GID数字。 若设为一个绝对路径, 则表示使用此路径的属主/属组。 这可用于根据已有文件的 属主/属组(例如带有SUID/SGID位二进制程序) 创建用户与组。

对于 m 来说, 此字段是将要吸纳新用户的组名称。

对于 r 来说, 此字段必须被设为 "FROM-TO" 格式的两个十进制UID/GID数字, 以表示一个范围。

简要描述(GECOS)

对于 u 来说, 表示对新建用户的简要描述, 必须用引号界定,且不可包含冒号(:)。

对于其他类型, 必须设为 "-" 或忽略。

家目录(Home)

对于 u 来说, 表示新建用户的家目录,若省略则表示使用默认的"/"(根目录)。 除非软件明确需要, 否则建议不要为系统用户设置不必要的家目录。

对于其他类型, 必须设为 "-" 或忽略。

配置目录及其优先级

配置文件依次从 /etc/, /run/, /usr/lib/ 目录中读取。 配置文件的名称必须符合 filename.conf 格式。 对于不同目录下的同名配置文件,仅以优先级最高的目录中的那一个为准。 具体说来就是: /etc/ 的优先级最高、 /run/ 的优先级居中、 /usr/lib/ 的优先级最低。

软件包应该将自带的配置文件安装在 /usr/lib/ 目录中。 /etc/ 目录仅供系统管理员使用。 所有的配置文件(无论位于哪个目录中),统一按照文件名的字典顺序处理。 如果在多个配置文件中设置了同一个选项, 那么仅以文件名最靠后(字典顺序)的那一个为准。 为了便于排序,建议给所有配置文件 都加上两位十进制数字的文件名前缀。

如果系统管理员想要屏蔽 /usr/lib/ 目录中的某个配置文件, 那么最佳做法是在 /etc/ 目录中 创建一个指向 /dev/null 的同名符号链接, 即可彻底屏蔽 /usr/lib/ 目录中的同名文件。 如果软件包自带的某个配置文件位于 initrd 镜像中, 那么还必须重新生成 initrd 镜像。

幂等性

所谓"幂等性"是指任意多次执行所产生的影响均与一次执行的影响相同。 也就是说如果被操作的用户或组已经存在, 那么 systemd-sysusers 将不会改变任何现有状态。 所以,一般不应该修改发行商的默认设置, 除非你想禁止创建某些用户或组。

参见

systemd(1), systemd-sysusers(8)