命令行手册

Man » usermod 手册在线 - usermod man 页面详细的在线文档

🌍
usermod - 修改用户帐户

概要

usermod [选项] 登录名

描述

usermod 命令修改系统帐户文件。

选项

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

-a, --append

将用户添加到辅助组。仅与 -G 选项一起使用。

-b, --badname

允许使用不符合标准的名称。

-c, --comment 注释
更新 /etc/passwd 中用户的注释字段,通常使用 chfn(1) 实用程序进行修改。

-d, --home 主目录

用户的新的登录目录。

如果给出了 -m 选项,则当前主目录的内容将被移动到新的主目录,如果新的主目录不存在,则会创建它。如果当前主目录不存在,则新的主目录将不会被创建。

-e, --expiredate 过期日期

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

输入 -1 或空字符串会清除 shadow 密码文件中的帐户过期字段。帐户将保持可用状态,没有过期日期。

此选项需要 /etc/shadow 文件。如果 /etc/shadow 文件中不存在条目,系统将自动创建一个。

-f, --inactive 不活动

定义密码超过其最大年龄后,用户仍然可以通过立即更改密码来登录的天数。如果用户在此期间内未更改密码,则其帐户将变为非活动状态。此值存储在 shadow 密码文件中。

值为 0 会在密码过期时禁用帐户,没有延迟。

值为 -1 会清空 shadow 密码文件中的相应字段,这意味着不强制执行非活动期。

此选项需要 /etc/shadow 文件。如果 /etc/shadow 文件中不存在条目,系统将自动创建一个。

-g, --gid 组

用户的新的主组的名称或数字 ID。该组必须存在。

用户主目录中由用户先前的主组拥有的任何文件都将由此新的组拥有。

用户主目录之外的文件组所有权必须手动修复。

如果主目录所有者的用户 ID 与当前或新的用户 ID 不同,则不会更改用户主目录中文件的组所有权。这是对特殊主目录(如 /)的一种安全措施。

-G, --groups 组1[,组2,...[,组N]]]

用户也是其成员的辅助组的列表。每个组之间用逗号分隔,没有中间的空格。这些组必须存在。

如果用户当前属于未列出的组,则用户将从该组中删除。可以通过 -a 选项来更改此行为,该选项会将用户附加到当前的辅助组列表中。

^ l, --login NEW_LOGIN 将用户的名称从 LOGIN 更改为 NEW_LOGIN。其他内容保持不变。特别是,用户的家目录或邮件存储区可能需要手动重命名以反映新的登录名。

^ L, --lock 锁定用户的密码。这会在加密的密码前添加一个 !,从而有效地禁用密码。不能将此选项与 -p-U 选项一起使用。

注意:如果您希望锁定帐户(不仅仅是密码访问),还应将 EXPIRE_DATE 设置为 1。

^ m, --move-home 将用户家目录的内容移动到新的位置。如果当前家目录不存在,则不会创建新的家目录。

此选项只能与 -d(或 --home)选项结合使用。

^ sermod 会尝试调整文件所有权并复制模式、ACL 和扩展属性,但之后可能需要手动进行更改。

^ o, --non-unique 允许将用户 ID 更改为非唯一值。

此选项只能与 -u 选项结合使用。由于用户身份充当密钥,用于映射用户和权限、文件所有权以及确定系统行为的其他方面,因此多个登录名将访问给定的 UID 对应的帐户。

^ p, --password PASSWORD 为用户定义新密码。PASSWORD 应为加密的密码,如 crypt(3) 返回的密码。

注意:请勿在命令行中使用此选项,因为密码(或加密密码)将对查看进程的用户可见。

密码将写入本地 /etc/passwd/etc/shadow 文件。这可能与 PAM 配置中配置的密码数据库不同。

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

^ r, --remove 从指定的辅助组中删除用户。仅与 -G 选项一起使用。

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

^ P, --prefix PREFIX_DIR 在以 PREFIX_DIR 开头的目录树中应用更改,并同时使用位于那里的配置文件。此选项不执行 chroot,而是用于准备交叉编译目标。有一些限制:NIS 和 LDAP 用户/组未进行验证。PAM 身份验证使用主机文件。不支持 SELINUX。

^ s, --shell SHELL 更改用户的登录 shell。SHELL 为空字符串会清空 /etc/passwd 中的该字段,并将用户登录到系统的默认 shell。


-u, --uid UID
用户 ID 的新值。

此值必须是唯一的,除非使用了 -o 选项。该值必须为非负数。

用户的邮箱,以及用户拥有的所有文件,这些文件位于用户的家目录中,其文件用户 ID 将自动更改。

用户家目录之外的文件所有权必须手动修复。

如果家目录所有者的 UID 与当前或新的用户 ID 不同,则不会更改用户家目录中文件的用户所有权。 这是一种安全措施,用于处理特殊的家目录,例如 /。

不会执行与 /etc/login.defs 中的 UID\_MIN、UID\_MAX、SYS\_UID\_MIN 或 SYS\_UID\_MAX 相关的检查。

-U, --unlock
解锁用户的密码。 这将删除加密密码前的“!”。 您不能将此选项与 -p 或 -L 结合使用。

注意:如果您希望解锁帐户(不仅仅是使用密码进行访问),您还应该设置 EXPIRE\_DATE(例如设置为 99999,或者设置为 /etc/default/useradd 中的 EXPIRE 值)。

-v, --add-subuids FIRST-LAST
将一系列辅助 UID 添加到用户的帐户。

可以多次指定此选项,以将多个范围添加到用户的帐户。

不会执行与 /etc/login.defs 中的 SUB\_UID\_MIN、SUB\_UID\_MAX 或 SUB\_UID\_COUNT 相关的检查。

-V, --del-subuids FIRST-LAST
从用户的帐户中删除一系列辅助 UID。

可以多次指定此选项,以删除多个范围。
当同时指定了 --del-subuids 和 --add-subuids 时,所有辅助 UID 范围的删除将在添加任何辅助 UID 范围之前发生。

不会执行与 /etc/login.defs 中的 SUB\_UID\_MIN、SUB\_UID\_MAX 或 SUB\_UID\_COUNT 相关的检查。

-w, --add-subgids FIRST-LAST
将一系列辅助 GID 添加到用户的帐户。

可以多次指定此选项,以将多个范围添加到用户的帐户。

不会执行与 /etc/login.defs 中的 SUB\_GID\_MIN、SUB\_GID\_MAX 或 SUB\_GID\_COUNT 相关的检查。

-W, --del-subgids FIRST-LAST
从用户的帐户中删除一系列辅助 GID。

可以多次指定此选项,以删除多个范围。
当同时指定了 --del-subgids 和 --add-subgids 时,所有辅助 GID 范围的删除将在添加任何辅助 GID 范围之前发生。

不会执行与 /etc/login.defs 中的 SUB\_GID\_MIN、SUB\_GID\_MAX 或 SUB\_GID\_COUNT 相关的检查。

-Z, --selinux-user SEUSER
定义要与 LOGIN 映射的 SELinux 用户。 空字符串("")将删除相应的条目(如果有)。 请注意,shadow 系统不存储 selinux-user,而是使用 semanage(8) 进行管理。

--selinux-range SERANGE
定义新帐户的 SELinux MLS 范围。 请注意,shadow 系统不存储 selinux-range,而是使用 semanage(8) 进行管理。

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

注意事项

在执行此命令时,必须确保目标用户没有正在执行任何进程,如果用户的数字用户 ID、用户名或主目录正在被更改。usermod 命令在 Linux 上会进行此检查。在其他操作系统上,它仅使用 utmp 来检查用户是否已登录。

必须手动更改任何 crontab 文件或 at 任务的所有者。

必须在 NIS 服务器上进行所有涉及 NIS 的更改。

配置

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

LASTLOG_UID_MAX(数字)

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

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

MAIL_DIR(字符串)

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

MAIL_FILE(字符串)

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

MAIL_DIR 和 MAIL_FILE 变量由 useradd、usermod 和 userdel 用于创建、移动或删除用户的邮件存储。

MAX_MEMBERS_PER_GROUP(数字)

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

默认值为 0,表示组中成员数量没有限制。

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

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

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

SUB_GID_MIN(数字)、SUB_GID_MAX(数字)、SUB_GID_COUNT(数字)

如果存在 /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(数字)、SUB_UID_MAX(数字)、SUB_UID_COUNT(数字)

如果存在 /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。


文件

/etc/group
组账户信息

/etc/gshadow
安全的组账户信息

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

/etc/passwd
用户账户信息

/etc/shadow
安全的用户账户信息

/etc/subgid
每个用户的次要组 ID

/etc/subuid
每个用户的次要用户 ID

参见

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