useradd — Linux 手册页
名称
useradd - 创建新用户或更新默认的新用户信息。
useradd [选项] LOGIN
useradd -D
useradd -D [选项]
描述
当不带 -D 选项调用 useradd 命令时,它会根据命令行上指定的值以及系统上的默认值创建一个新用户帐户。根据命令行选项的不同,useradd 命令会更新系统文件,并可能创建新用户的家目录并复制初始文件。
默认情况下,还会为新用户创建一个组(参见 -g、-N、-U 和 USERGROUPS_ENAB)。
选项
适用于 useradd 命令的选项有:
选项 | 描述 |
---|---|
–badname | 允许不符合标准的名称。 |
-b, --base-dir BASE_DIR | 如果未指定 -d HOME_DIR,则为系统的默认基本目录。BASE_DIR 与帐户名连接以定义主目录。 |
-c, --comment COMMENT | 任意文本字符串。通常是帐户的简短描述,当前用作用户的全名字段。 |
-d, --home-dir HOME_DIR | 使用 HOME_DIR 创建新用户作为用户的登录目录。默认情况下,将帐户名附加到 BASE_DIR 并将其用作登录目录名称。如果目录 HOME_DIR 不存在,则除非指定了 -M 选项,否则将创建该目录。 |
-D, --defaults | 参见下面的“更改默认值”子段。 |
-e, --expiredate EXPIRE_DATE | 用户帐户被禁用的日期。日期以 YYYY-MM-DD 格式指定。 |
-f, --inactive INACTIVE | 定义密码超过其最大年龄后用户预计要更换此密码的天数。该值存储在 shadow 密码文件中。输入 0 将立即禁用已过期的密码。输入 -1 将清除 shadow 密码文件中的相应字段。有关详细信息,请参见 shadow(5)。 |
-G, --groups GROUP1[,GROUP2,…[,GROUPN]]] | 用户附加成员的附加组列表。每个组之间用逗号分隔,没有空格。这些组与使用 -g 选项给出的组的限制相同。默认情况下,用户只属于初始组。除了传递 -G 标志之外,您还可以将选项 GROUPS 添加到文件 /etc/default/useradd,然后将所有用户添加到这些附加组中。 |
-h, --help | 显示帮助消息并退出。 |
-k, --skel SKEL_DIR | 包含要在用户的家目录中复制的文件和目录的骨架目录,当使用 useradd 创建家目录时。 |
-K, --key KEY=VALUE | 覆盖 /etc/login.defs 中的默认值(UID_MIN、UID_MAX、UMASK、PASS_MAX_DAYS 等)。 |
-m, --create-home | 如果不存在,创建用户的家目录。当家目录被创建时,将复制骨架目录(可以通过 -k 选项定义)中包含的文件和目录。 |
-M, --no-create-home | 不创建用户的家目录,即使系统范围的设置(CREATE_HOME)设置为是。 |
-N, --no-user-group | 不创建与用户同名的组,但将用户添加到由 -g 选项或 /etc/default/useradd 中的 GROUP 变量指定的组。 |
-o, --non-unique | 允许使用已存在的 UID 创建帐户。 |
-p, --password PASSWORD | 为帐户定义初始密码。PASSWORD 预期是加密的,就像 crypt(3) 返回的那样。在 shell 脚本中,此选项可有效地批量创建用户。 |
-r, --system | 创建系统账户。 |
-s, --shell SHELL | 设置用户的登录 shell 的路径。如果没有此选项,系统将使用 /etc/default/useradd 中指定的 SHELL 变量,或者如果未设置该变量,则 /etc/passwd 中的登录 shell 字段保持空白。 |
-u, --uid UID | 用户 ID 的数值。此值必须是唯一的,除非使用 -o 选项。该值必须为非负数。默认情况下,将使用大于或等于 UID_MIN 并大于其他用户的最小 ID 值。 |
-U, --user-group | 创建与用户同名的组,并将用户添加到此组中。 |
-Z, --selinux-user SEUSER | 为新帐户定义 SELinux 用户。如果没有此选项,SELinux 将使用默认用户。请注意,shadow 系统不存储 selinux-user,它使用 semanage(8) 进行处理。 |
–selinux-range SERANGE | 为新帐户定义 SELinux MLS 范围。如果没有此选项,SELinux 将使用默认范围。请注意,shadow 系统不存储 selinux-range,它使用 semanage(8) 进行处理。 |
示例代码
以下是使用 useradd 命令的十种常见用法和相应的示例代码:
1.创建一个新用户:
useradd username
2.创建一个新用户,并指定登录 shell:
useradd -s /bin/bash username
3.创建一个新用户,并指定密码:
useradd -p password username
4.创建一个新用户,并将其添加到其他组:
useradd -G group1,group2 username
5.创建一个新用户,并设置其家目录:
useradd -d /home/username username
6.创建一个新用户,并同时创建与其同名的组:
useradd -U username
7.创建一个系统账户:
useradd -r username
8.创建一个新用户,并禁止其登录:
useradd -s /sbin/nologin username
9.创建一个新用户,并指定其 UID:
useradd -u 1000 username
10.创建一个新用户,并指定其登录 shell 和家目录:
useradd -s /bin/bash -d /home/username username
创建hadoop用户示例
在CentOS中,你可以按照以下步骤来增加Hadoop用户:
1.以root用户登录到CentOS系统。
2.执行以下命令创建一个新的用户(例如"hadoop"):
useradd hadoop
3.设置该用户的密码:
passwd hadoop
4.(可选)如果你希望将该用户添加到sudoers列表以获得sudo权限,请编辑sudoers文件:
visudo
在打开的文件中找到以下行:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
在这些行之后添加以下行以授予"hadoop"用户sudo权限:
hadoop ALL=(ALL) ALL
保存并关闭文件。
5.检查新用户是否成功创建:
id hadoop
如果输出显示用户的UID、GID和所属组等信息,则表示用户已成功创建。
现在,在CentOS系统中,你已经成功创建了名为"hadoop"的用户,并设置了密码。如果需要,你还可以选择将该用户添加到sudoers列表以获得sudo权限。
请注意,在进行任何更改之前,请确保理解安全最佳实践,并相应地调整用户权限。
类似命令
与 useradd 命令类似的命令有:adduser、newusers。
配置
以下位于 /etc/login.defs 的配置变量可以改变 useradd 命令的行为:
- CREATE_HOME(布尔值):指示是否默认为新用户创建家目录。可以在命令行上覆盖此设置。
- GID_MAX(数字)、GID_MIN(数字):通过 useradd、groupadd 或 newusers 创建常规组时使用的组 ID 范围。
- HOME_MODE(数字):新建家目录的模式。如果未指定,将使用 UMASK 来创建模式。
- LASTLOG_UID_MAX(数字):要更新 lastlog 条目的最高用户 ID 号码。
- MAIL_DIR(字符串):邮件池目录。
- MAIL_FILE(字符串):定义用户邮箱池文件的位置。
- MAX_MEMBERS_PER_GROUP(数字):每个组条目中的最大成员数。
- PASS_MAX_DAYS(数字):密码可使用的最大天数。
- PASS_MIN_DAYS(数字):允许两次更改密码之间的最小天数。
- PASS_WARN_AGE(数字):在密码过期前提供的警告天数。
- SUB_GID_MIN(数字)、SUB_GID_MAX(数字)、SUB_GID_COUNT(数字):为每个新用户分配附属组 ID 的范围和数量。
- SUB_UID_MIN(数字)、SUB_UID_MAX(数字)、SUB_UID_COUNT(数字):为每个新用户分配附属用户 ID 的范围和数量。
- SYS_GID_MAX(数字)、SYS_GID_MIN(数字):通过 useradd、groupadd 或 newusers 创建系统组时使用的组 ID 范围。
- SYS_UID_MAX(数字)、SYS_UID_MIN(数字):通过 useradd 或 newusers 创建系统用户时使用的用户 ID 范围。
- UID_MAX(数字)、UID_MIN(数字):通过 useradd 或 newusers 创建常规用户时使用的用户 ID 范围。
- UMASK(数字):文件模式创建掩码初始化为此值。
- PAM_AUTH(字符串):用户和组身份验证方法。
- USERGROUPS_ENAB(布尔值):指示是否在删除不再包含任何成员的用户组时,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/:在添加用户期间执行的运行部件文件。useradd-pre.d 在任何用户添加之前执行,useradd-post.d 在用户添加之后执行。
- /etc/skel/:包含默认文件的目录,用于在创建用户时复制到其家目录中。
- /etc/subgid:每个用户的附属组 ID。
- /etc/subuid:每个用户的附属用户 ID。
- /etc/login.defs:Shadow 密码套件的配置文件。
这些文件包含了用户和组的重要信息,对于管理用户和组以及设置他们的权限和属性非常有用。
退出值
0:表示命令执行成功。
1:表示无法更新密码文件,可能是密码文件损坏或者权限问题。
2:表示命令语法无效,请检查命令格式是否正确。
3:表示选项的参数无效,请检查命令行参数是否正确。
4:表示指定的 UID 已经在使用中,且没有使用 -o 选项强制覆盖。
6:表示指定的组不存在,请确保组名正确。
9:表示用户名或组名已经在使用中,请检查是否重复。
10:表示无法更新组文件,可能是组文件损坏或者权限问题。
12:表示无法为用户创建家目录,可能是磁盘空间不足或者权限问题。
14:表示无法更新 SELinux 用户映射,可能是 SELinux 配置问题。
参见
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)
拓展
hadoop ALL=(ALL:ALL) ALL
上述行 hadoop ALL=(ALL:ALL) ALL
表示将用户 “hadoop” 授予了在所有主机、作为所有用户和所有组进行所有命令的 sudo 权限。
具体而言,(ALL:ALL)
部分指定了允许该用户以任何用户身份 (ALL) 和任何组身份 (ALL) 执行 sudo 命令。最后一个 ALL
表示该用户可以在任何主机上执行 sudo 命令。
这样配置后,用户 “hadoop” 将能够以管理员权限来执行系统中的操作,包括安装和配置 Hadoop 集群。
请注意,在更改 sudoers 文件时要谨慎,并确保只授予必要的用户 sudo 权限。此外,建议使用最小特权原则,仅给予必要的用户 sudo 权限,以确保系统的安全性。
sudo useradd -m hadoop -s /bin/bash
使用命令 sudo useradd -m hadoop -s /bin/bash
将创建一个名为 “hadoop” 的用户,并指定其登录时使用的 shell 为 /bin/bash
。
具体解释如下:
sudo
:以管理员权限执行命令。useradd
:用于创建新用户的命令。-m
:表示在创建用户时同时创建用户的主目录。hadoop
:指定要创建的用户名。-s /bin/bash
:指定用户登录时使用的 shell。
通过以上命令,你将创建一个名为 “hadoop” 的用户,并为其分配了默认的主目录和 shell。你可以根据实际需求和系统要求进行相应的调整。请确保以管理员身份执行此命令,并遵循安全最佳实践。
具体解释如下:
sudo
:以管理员权限执行命令。useradd
:用于创建新用户的命令。-m
:表示在创建用户时同时创建用户的主目录。hadoop
:指定要创建的用户名。-s /bin/bash
:指定用户登录时使用的 shell。
通过以上命令,你将创建一个名为 “hadoop” 的用户,并为其分配了默认的主目录和 shell。你可以根据实际需求和系统要求进行相应的调整。请确保以管理员身份执行此命令,并遵循安全最佳实践。