命令行手册

Man » useradd 手册在线 - useradd 手册页的详细在线文档

🌍
useradd - 创建新用户或更新默认新用户信息

概要

useradd [选项] LOGIN

useradd -D

useradd -D [选项]

描述

useradd 是一个用于添加用户的低级工具。在 Debian 上,管理员通常应该使用 adduser(8) 代替。

在不使用 -D 选项的情况下调用时,useradd 命令会使用命令行中指定的以及系统中的默认值来创建新的用户帐户。根据命令行选项,useradd 命令将更新系统文件,并且可能还会创建新的用户的主目录并复制初始文件。

默认情况下,还会为新用户创建一个组(请参阅 -g、-N、-U 和 USERGROUPS_ENAB)。

选项

适用于 useradd 命令的选项如下:

--badname
允许使用不符合标准命名的帐户。

-b, --base-dir BASE_DIR
如果未指定 -d HOME_DIR,则为系统的默认基本目录。BASE_DIR 会与帐户名称连接以定义主目录。

如果未指定此选项,useradd 将使用 /etc/default/useradd 中的 HOME 变量中指定的或默认的 /home 作为基本目录。

-c, --comment COMMENT
任何文本字符串。通常是帐户的简短描述,当前用作用户的全名字段。

-d, --home-dir HOME_DIR
新用户将使用 HOME_DIR 作为用户的登录目录的值进行创建。默认情况下,将帐户名称附加到 BASE_DIR,并将其用作登录目录名称。默认情况下,不会创建目录 HOME_DIR。但是,如果指定了 -m 标志或 login.defs 中的 CREATE_HOME 设置为 true,则会为非系统用户创建该目录。但是,如果指定了 -M 标志,则永远不会创建它。

-D, --defaults
请参见下面的“更改默认值”小节。

-e, --expiredate EXPIRE_DATE
设置将禁用用户帐户的日期。该值可以指定为 YYYY-MM-DD 格式的日期,也可以指定为自 1970-01-01 以来的天数。日期将使用 UTC 时区进行解释。

如果未指定,useradd 将使用 /etc/default/useradd 中的 EXPIRE 变量中指定的默认到期日期,或者默认情况下使用空字符串(无到期)。

-f, --inactive INACTIVE
定义密码超过其最大使用期限后,用户帐户被锁定的天数。如果用户在此期间内没有更改其密码,则其帐户将变为非活动状态。此值存储在 shadow 密码文件中。有关更多信息,请参阅 shadow(5)。

如果值为 0,则在密码过期时立即禁用帐户,不延迟。
如果值为 -1,则清空阴影密码文件中的相应字段,这意味着不强制执行非活动期。
如果未指定,useradd 将使用 /etc/default/useradd 中 INACTIVE 变量指定的默认非活动期,或者如果未指定任何值,则默认为 -1。
-F, --add-subids-for-system
即使使用 -r 选项创建系统帐户,也更新 /etc/subuid 和 /etc/subgid。
-g, --gid GROUP
用户的基本组的名称或编号。组名必须存在。组编号必须引用一个已存在的组。
如果未指定,useradd 的行为将取决于 /etc/login.defs 中的 USERGROUPS\_ENAB 变量。如果此变量设置为 yes(或者在命令行中指定了 -U/--user-group),则将为用户创建一个组,组名与登录名相同。如果变量设置为 no(或者在命令行中指定了 -N/--no-user-group),useradd 将把新用户的基本组设置为 /etc/default/useradd 中 GROUP 变量指定的值,或者默认值为 100。
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
用户也是其成员的补充组列表。每个组之间用逗号分隔,不含任何空格。各组受 -g 选项中给定的组的相同限制。默认情况下,用户仅属于初始组。除了在命令行中传递 -G 标志之外,还可以将 GROUPS 选项添加到 /etc/default/useradd 文件中,这将使所有用户都添加到这些补充组中。
-h, --help
显示帮助消息并退出。
-k, --skel SKEL_DIR
骨架目录,其中包含要复制到用户主目录中的文件和目录,当 useradd 通过创建主目录时。
此选项仅在指定 -m(或 --create-home)选项时有效。
如果未设置此选项,则骨架目录由 /etc/default/useradd 中的 SKEL 变量或默认的 /etc/skel 定义。
指向骨架目录的绝对符号链接将用用户的家目录替换 /etc/skel 前缀。
如果可能,则会复制 ACL 和扩展属性。
-K, --key KEY=VALUE
覆盖 /etc/login.defs 中的默认值(UID\_MIN、UID\_MAX、UMASK、PASS\_MAX\_DAYS 等)。
示例:-K PASS\_MAX\_DAYS =-1 可用于在创建帐户时禁用密码老化。可以指定多个 -K 选项,例如:-K UID\_MIN =100 -K UID\_MAX=499
-l, --no-log-init
不要将用户添加到 lastlog 和 faillog 数据库中。
默认情况下,用户的 lastlog 和 faillog 数据库条目将被重置,以避免重复使用之前删除的用户中的条目。
如果未指定此选项,useradd 还会检查 /etc/default/useradd 中的 LOG\_INIT 变量是否设置为 no,如果是,则用户不会添加到 lastlog 和 faillog 数据库中。

-m, --create-home
如果用户的家目录不存在,则创建用户的家目录。家目录中包含的文件和目录将从骨架目录(可以使用 -k 选项定义)复制到家目录。

默认情况下,如果未指定此选项且未启用 CREATE_HOME,则不会创建任何家目录。

创建用户家目录的目录必须存在,并且具有正确的 SELinux 上下文和权限。否则,无法创建或访问用户的家目录。

-M, --no-create-home
即使系统范围内的设置 /etc/login.defs(CREATE_HOME)设置为 yes,也不要创建用户的家目录。

-N, --no-user-group
不要创建与用户同名的组,而是将用户添加到由 -g 选项或 /etc/default/useradd 中的 GROUP 变量指定的组。

如果未指定 -g、-N 和 -U 选项,则默认行为由 /etc/login.defs 中的 USERGROUPS_ENAB 变量定义。

-o, --non-unique
允许创建具有现有 UID 的帐户。

此选项仅与 -u 选项结合使用有效。由于用户身份用作将用户与权限、文件所有权和其他决定系统行为的方面映射起来的关键,因此多个登录名将访问给定 UID 的帐户。

-p, --password PASSWORD
为帐户定义初始密码。PASSWORD 应为加密的,如 crypt(3) 返回的那样。在 shell 脚本中,此选项允许有效地创建一批用户。

如果没有此选项,则新帐户将被锁定且没有定义的密码,即 /etc/shadow 中相应字段的单个感叹号。这是用户无法访问帐户或自行定义密码的状态。

注意:避免在命令行中使用此选项,因为密码(或加密密码)将对列出进程的用户可见。

您应该确保密码符合系统的密码策略。

-r, --system
创建一个系统帐户。

系统用户将创建没有 /etc/shadow 中老化信息的帐户,并且它们的数字标识将从 /etc/login.defs 中定义的 SYS_UID_MIN-SYS_UID_MAX 范围(而不是 UID_MIN-UID_MAX)中选择(它们的 GID 对应项用于创建组)。

请注意,useradd 不会为这样的用户创建家目录,无论 /etc/login.defs(CREATE_HOME)中的默认设置如何。如果要为系统帐户创建家目录,则必须指定 -m 选项。

请注意,此选项不会更新 /etc/subuid 和 /etc/subgid。如果要为要创建的系统帐户更新这些文件,则必须指定 -F 选项。

-R, --root CHROOT_DIR
在 CHROOT_DIR 目录中应用更改,并使用 CHROOT_DIR 目录中的配置文件。仅支持绝对路径。

-P, --prefix PREFIX_DIR

将更改应用于位于目录 PREFIX_DIR 下的根文件系统中的配置文件。此选项不执行 chroot,而是用于准备交叉编译目标。一些限制:NIS 和 LDAP 用户/组不会被验证。PAM 身份验证使用主机文件。不支持 SELINUX。

-s, --shell SHELL

设置用户的登录 shell 路径。如果没有此选项,系统将使用 /etc/default/useradd 中指定的 SHELL 变量,或者,如果该变量也没有设置,则 /etc/passwd 中的登录 shell 字段将保持为空。

-u, --uid UID

用户的 ID 的数值。除非使用 -o 选项,否则此值必须是唯一的。该值必须是非负数。默认情况下,将使用大于或等于 UID_MIN 且大于所有其他用户的最小 ID 值。

请参阅 -r 选项和 UID_MAX 的描述。

-U, --user-group

创建一个与用户同名的组,并将用户添加到该组中。

如果未指定 -g、-N 和 -U 选项,则默认行为由 /etc/login.defs 中的 USERGROUPS_ENAB 变量定义。

-Z, --selinux-user SEUSER

定义新帐户的 SELinux 用户。如果没有此选项,SELinux 将使用默认用户。请注意,shadow 系统不存储 selinux-user,而是使用 semanage(8) 来进行管理。

--selinux-range SERANGE

定义新帐户的 SELinux MLS 范围。如果没有此选项,SELinux 将使用默认范围。请注意,shadow 系统不存储 selinux-range,而是使用 semanage(8) 来进行管理。

此选项仅在指定 -Z(或 --selinux-user)选项时才有效。

更改默认值

仅使用 -D 选项调用时,useradd 将显示当前默认值。使用 -D 加上其他选项调用时,useradd 将更新指定选项的默认值。有效的默认值更改选项是:

-b, --base-dir BASE_DIR

设置新用户的主目录路径前缀。用户的名称将附加到 BASE_DIR 的末尾,以形成新用户的主目录名称(如果创建新帐户时未使用 -d 选项)。

此选项设置 /etc/default/useradd 中的 HOME 变量。

-e, --expiredate EXPIRE_DATE

设置新创建的用户帐户将被禁用的日期。

此选项设置 /etc/default/useradd 中的 EXPIRE 变量。

-f, --inactive INACTIVE

指定密码过期后用户仍然可以登录的天数。在此期间之后,帐户将被锁定。

此选项设置 /etc/default/useradd 中的 INACTIVE 变量。

-g, --gid GROUP

设置新创建用户的默认主组,接受组名或数字组 ID。指定的组必须存在,并且 GID 必须具有现有的条目。

此选项设置 /etc/default/useradd 中的 GROUP 变量。

-s, --shell SHELL

定义新用户的默认登录 shell。

此选项设置 /etc/default/useradd 中的 SHELL 变量。


备注

系统管理员负责将默认用户文件放置在 /etc/skel/ 目录中(或 /etc/default/useradd 或命令行中指定的任何其他骨架目录中)。

注意事项

您不能将用户添加到 NIS 或 LDAP 组中。必须在相应的服务器上执行此操作。

同样,如果用户名已存在于外部用户数据库(如 NIS 或 LDAP)中,useradd 将拒绝用户帐户创建请求。

用户名只能包含小写和大写字母、数字、下划线或破折号。它们可以以美元符号结尾。不允许在用户名开头使用破折号。完全数字的用户名和以 . 或 .. 开头的用户名也不允许。不建议使用以 . 开头的用户名,因为它们的家目录在 ls 输出中将被隐藏。

用户名最多只能有 256 个字符。

配置

/etc/login.defs 中的以下配置变量会更改此工具的行为:

CREATE_HOME(布尔值)

指示是否应默认为新用户创建主目录。

此设置不适用于系统用户,并且可以通过命令行进行覆盖。

GID_MAX(数字)、GID_MIN(数字)

useradd、groupadd 或 newusers 用于创建常规组的组 ID 范围。

GID_MIN(分别)和 GID_MAX(分别)的默认值为 1000(分别)和 60000。

HOME_MODE(数字)

新主目录的模式。如果未指定,则使用 UMASK 来创建模式。

useradd 和 newusers 使用此设置来设置其创建的主目录的模式。

LASTLOG_UID_MAX(数字)

应更新 lastlog 条目的最高用户 ID 编号。由于通常由远程用户身份验证服务跟踪更高的用户 ID,因此无需为它们创建巨大的稀疏 lastlog 文件。

如果配置中不存在 LASTLOG_UID_MAX 选项,则表示写入 lastlog 条目没有用户 ID 限制。

MAIL_DIR(字符串)

邮件池目录。这用于在修改或删除相应的用户帐户时操作邮箱。如果未指定,则使用编译时默认值。/etc/default/useradd 中的 CREATE_MAIL_SPOOL 参数确定是否应创建邮件池。

MAIL_FILE(字符串)

相对于用户的主目录,定义用户邮件池文件的位置。

useradd、usermod 和 userdel 使用 MAIL_DIR 和 MAIL_FILE 变量来创建、移动或删除用户的邮件池。

MAX_MEMBERS_PER_GROUP(数字)

每个组条目的最大成员数。达到最大值时,将在 /etc/group 中(具有相同的名称、相同的密码和相同的 GID)启动一个新的组条目(行)。

默认值为 0,这意味着组中成员数量没有限制。

此功能(拆分组)允许限制组文件中的行长。这对于确保 NIS 组的行不超过 1024 个字符非常有用。


如果需要强制执行此类限制,可以使用 25。

注意:并非所有工具(即使在 Shadow 工具套件中)都支持拆分组。除非您真的需要,否则不应使用此变量。

PASS_MAX_DAYS (number)

密码可用的最大天数。如果密码超过此天数,则强制更改密码。如果未指定,则假定为 -1(这将禁用该限制)。

PASS_MIN_DAYS (number)

密码更改之间的允许的最短天数。任何尝试在更短时间内进行的密码更改都将被拒绝。如果未指定,则假定为 0(这将禁用该限制)。

PASS_WARN_AGE (number)

密码到期前给出的警告天数。零表示仅在到期当天给出警告,值为 -1 表示不给出警告。如果未指定,则不提供任何警告。

SUB_GID_MIN (number),SUB_GID_MAX (number),SUB_GID_COUNT (number)

如果 /etc/subuid 存在,则 useradd 和 newusers 命令(除非用户已经具有辅助组 ID)为每个新用户从 SUB_GID_MIN 到 SUB_GID_MAX 的范围内分配 SUB_GID_COUNT 个未使用的组 ID。

SUB_GID_MIN、SUB_GID_MAX 和 SUB_GID_COUNT 的默认值分别为 100000、600100000 和 65536。

SUB_UID_MIN (number),SUB_UID_MAX (number),SUB_UID_COUNT (number)

如果 /etc/subuid 存在,则 useradd 和 newusers 命令(除非用户已经具有辅助用户 ID)为每个新用户从 SUB_UID_MIN 到 SUB_UID_MAX 的范围内分配 SUB_UID_COUNT 个未使用的用户 ID。

SUB_UID_MIN、SUB_UID_MAX 和 SUB_UID_COUNT 的默认值分别为 100000、600100000 和 65536。

SYS_GID_MAX (number),SYS_GID_MIN (number)

useradd、groupadd 或 newusers 命令用于创建系统组的组 ID 范围。

SYS_GID_MIN(分别)和 SYS_GID_MAX 的默认值分别为 101(分别)和 GID_MIN-1。

SYS_UID_MAX (number),SYS_UID_MIN (number)

useradd 或 newusers 命令用于创建系统用户的用户 ID 范围。

SYS_UID_MIN(分别)和 SYS_UID_MAX 的默认值分别为 101(分别)和 UID_MIN-1。

UID_MAX (number),UID_MIN (number)

useradd 或 newusers 命令用于创建普通用户的用户 ID 范围。

UID_MIN(分别)和 UID_MAX 的默认值分别为 1000(分别)和 60000。

UMASK (number)

文件模式创建掩码初始化为此值。如果未指定,则掩码将初始化为 022。

useradd 和 newusers 使用此掩码来设置创建的主目录的模式,如果未设置 HOME_MODE。

它也由 pam_umask 用作默认 umask 值。

USERGROUPS_ENAB (boolean)

如果设置为 yes,则 userdel 将删除用户的组(如果该组不再有成员),并且 useradd 默认情况下将创建一个与用户同名的组。

文件

/etc/passwd

用户帐户信息。

/etc/shadow

安全的用户帐户信息。

/etc/group

组帐户信息。

/etc/gshadow

安全的组帐户信息。


/etc/default/useradd
用于创建帐户的默认值。

/etc/shadow-maint/useradd-pre.d/*, /etc/shadow-maint/useradd-post.d/*
在用户添加期间执行的脚本文件。环境变量 ACTION 将填充为 useradd,SUBJECT 将填充为用户名。useradd-pre.d 将在用户添加之前执行。useradd-post.d 将在用户添加之后执行。如果脚本以非零值退出,则执行将终止。

/etc/skel/
包含默认文件的目录。

/etc/subgid
每个用户的辅助组 ID。

/etc/subuid
每个用户的辅助用户 ID。

/etc/login.defs
Shadow 密码套件配置。

退出值

useradd 命令的退出值为:

0   成功

1   无法更新密码文件

2   无效的命令语法

3   选项的参数无效

4   UID 已经使用(并且未指定 -o)

6   指定的组不存在

9   用户名或组名已使用

10  无法更新组文件

12  无法创建主目录

14  无法更新 SELinux 用户映射

19  无效的用户或组名

参见

chfn(1), chsh(1), passwd(1), crypt(3), groupadd(8), groupdel(8), groupmod(8), login.defs(5), newusers(8), subgid(5), subuid(5), userdel(8), usermod(8).