Linux(Centos 7.6)命令详解:useradd

发布于:2025-07-13 ⋅ 阅读:(20) ⋅ 点赞:(0)

1.命令作用

创建新用户或更新默认的新用户信息(create a new user or update default new user information)

2.命令语法

Usage: useradd [options] LOGIN
             useradd -D
             useradd -D [options]

3.参数详解

OPTION:

  • -b, --base-dir BASE_DIR,新帐户的主目录的基本目录;目录必须存在
  • -c, --comment COMMENT,新帐户的注释信息,会显示在/etc/passwd文件中
  • -d, --home-dir HOME_DIR,新帐户的主/家目录;必须保证用户上一层目录存在,如/opt/home/user3为user3的家目录,必须保证/opt/home存在才成功
  • -D, --defaults,打印或更改默认useradd配置
  • -e, --expiredate EXPIRE_DATE,新帐户的截止日期
  • -f, --inactive INACTIVE,新帐户密码过期后可登录宽限的时间
  • -g, --gid GROUP,新建帐户的用户组名或ID,设置一个主用户组,仅能设置一个,用户组ID可在/etc/group中查看
  • -G, --groups GROUPS,新帐户的补充组列表,设置附加用户组,可设置多个,用逗号分隔
  • -h, --help,显示此帮助信息并退出
  • -k, --skel SKEL_DIR,使用这个备选骨架(skeleton)目录;默认的目录是/etc/skel/,主要包括.bashrc、.bash_profile、.mozilla等目录或文件
  • -K, --key KEY=VALUE,覆盖/etc/login.defs默认值
  • -l, --no-log-init,不将用户添加到 lastlog 和 faillog 数据库中;文件位于/var/log/目录下
  • -m, --create-home,创建用户的主目录(默认参数)
  • -M, --no-create-home,不创建用户的主目录
  • -N, --no-user-group,不创建与用户同名的组
  • -o, --non-unique,允许创建具有重复(非唯一)UID的用户
  • -p, --password PASSWORD,创建用户时指定加密后的密码字符串,注意是加密后的字符串
  • -r, --system,创建系统帐户,创建的系统用户UID范围是1-999,默认没有家目录,可添加-m参数指定家目录
  • -R, --root CHROOT_DIR,指定chroot目录执行命令(参考chroot命令用法)
  • -s, --shell SHELL,新帐户的登录shell,一般是'-s /bin/bash',也可以指定'/bin/zsh',默认值可在useradd -D中查看
  • -u, --uid UID,新帐户的user ID
  • -U, --user-group,创建与用户同名的组,与-N相反,默认参数
  • -Z, --selinux-user SEUSER,为SELinux用户映射使用特定的SEUSER

4.常用用例

4.1.查看/修改基目录,指定基目录创建用户

[root@node1 ~]# useradd -D  # 创建用户的基本信息(也可在/etc/default/useradd文件查看),其基目录默认是/home目录,可以自定义创建用户的基目录;
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@node1 ~]# 
[root@node1 ~]# useradd -D -b /opt        # 可以修改其基目录
[root@node1 ~]# useradd -D -s /bin/zsh
[root@node1 ~]# useradd -D
GROUP=100
HOME=/opt
INACTIVE=-1
EXPIRE=
SHELL=/bin/zsh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@node1 ~]# useradd -D -b /home
[root@node1 ~]# useradd -D -s /bin/bash
[root@node1 ~]# 
[root@node1 ~]# useradd -b /opt user1   # 可以使用-b指定创建用户的基目录;-b指定/opt时注意不要写成/opt/(这样执行后pwd查看的家目录显示/opt//user1)
Creating mailbox file: File exists
[root@node1 ~]# su - user1              # su - user1 用于Linux用户之间切换
[user1@node1 ~]$ pwd                    # 打印当前所处的目录
/opt/user1
[user1@node1 ~]$ 

4.2.创建用户时添加注释

[root@node1 ~]# useradd -c 'this is user2 comment' user2
[root@node1 ~]#
[root@node1 ~]# cat /etc/passwd | grep user2
user2:x:1004:1004:this is user2 comment:/home/user2:/bin/bash
[root@node1 ~]#
[root@node1 ~]# getent passwd user2
user2:x:1004:1004:this is user2 comment:/home/user2:/bin/bash
[root@node1 ~]# 
[root@node1 ~]# finger user4     # finger命令需要自己安装,系统默认没有该命令
Login: user2          			Name: this is user2 comment
Directory: /home/user4              	Shell: /bin/bash
Never logged in.
No mail.
No Plan.
[root@node2 ~]# 

4.3创建用户时自定义家目录

[root@node1 ~]# useradd -d /opt/user1 user3     # user1上一层目录存在,执行成功
[root@node1 ~]# su - user3                      # su - user1是切换用户的命名
[user3@node1 ~]$ pwd                            # 切换后的目录就是-d指定的目录
/opt/user3
[user3@node1 ~]$ exit                           # 退出user3用户,回到之前的root用户 
logout
[root@node1 ~]# useradd -d /opt/user2 -m user4  # -m是要创建家目录,指定的目录满足条件,可正常执行
[root@node1 ~]# su - user4
[user4@node1 ~]$ pwd
/opt/user4
[user4@node1 ~]$ exit
logout
[root@node1 ~]# useradd -d /opt/home/user5 user5      # user1上一层目录不存在,用户会创建成功,但是家目录创建失败
useradd: cannot create directory /opt/home/user5
[root@node1 ~]# 
[root@node1 ~]# userdel user5                         # 上面仅是目录创建失败,但用户是创建成功的,需要删除用户
[root@node1 ~]# useradd -d /opt/home/user5 -m user5   # -m是要创建家目录,指定的目录user3上一层目录不存在,不满足条件,用户会创建成功,但是家目录创建失败
useradd: cannot create directory /opt/home/user5
[root@node1 ~]# 
[root@node1 ~]# userdel user5
[root@node1 ~]# useradd -d /opt/home/user5 -M user5   # -M是不要创建家目录,即使user3上一层目录不存在,也会成功,但是su - user3切换用户后,所处的目录是/root,注意与上面的区别
[root@node5 ~]# su - user5
su: warning: cannot change directory to /opt/home/user3: No such file or directory
-bash-4.2$ pwd
/root
-bash-4.2$ 

4.4.创建用户时指定过期时间

[root@node1 ~]# useradd -e "2025-12-31" user6
[root@node1 ~]# chage -l user6
Last password change					: Jun 09, 2025            # 最后一次密码口令修改时间
Password expires					: never                       # 密码口令过期
Password inactive					: never                       # 密码活跃,没设置为never不活跃
Account expires						: Dec 31, 2025                # 过期时间
Minimum number of days between password change		: 0           # 密码更改之间的最小天数
Maximum number of days between password change		: 99999       # 密码更改之间的最大天数
Number of days of warning before password expires	: 7           # 密码过期前的警告天数
[root@node1 ~]# 

 4.5.指定用户组创建用户

[root@node1 ~]# groupadd usergroup           # 需要先创建一个用户组
[root@node1 ~]# useradd -g usergroup user7   # 也可以指定GID,形如useradd -g 1003 user7;GID可以在/etc/group中查看;如果不指定-g用户组,会默认创建一个与用户名相同的用户组
[root@node1 ~]# su - user7
[user7@node1 ~]$ ll -a
total 12
drwx------. 5 user7 usergroup 107 Jun  9 14:24 .
drwxr-xr-x. 6 root  root       57 Jun  9 14:24 ..
-rw-r--r--. 1 user7 usergroup  18 Oct 31  2018 .bash_logout
-rw-r--r--. 1 user7 usergroup 193 Oct 31  2018 .bash_profile
-rw-r--r--. 1 user7 usergroup 231 Oct 31  2018 .bashrc
drwxr-xr-x. 3 user7 usergroup  18 Jun  9 14:24 .cache
drwxr-xr-x. 3 user7 usergroup  18 Jun  9 14:24 .config
drwxr-xr-x. 4 user7 usergroup  39 Dec 13 00:58 .mozilla
[user7@node1 ~]$ exit
logout
[root@node1 ~]# groupadd usergroup1
[root@node1 ~]# groupadd usergroup2
[root@node1 ~]# useradd -g usergroup -G usergroup1,usergroup2 user8   # 还可以指定附加用户组
[root@node1 ~]# 

4.6.创建用户时不创建同名用户组 

# 默认情况下未指定-g参数时,创建用户会自动创建一个与用户名称相同的用户组
# 指定-N同时未指定-g参数时,创建的用户会归于100用户组下
# 如指定-N参数时建议也指定-g参数
# 指定-g参数,会按照-g参数指定的名称创建组,就算没有指定-N也不会创建与用户名相同的用户组
[root@node1 ~]# useradd -N user9
[root@node1 ~]# getent passwd user9
user9:x:1005:100::/home/user9:/bin/bash
[root@node1 ~]# 

4.7.创建用户时指定UID,且可设置重复的UID

[root@node1 ~]# useradd -u 1000 user10        # 默认情况下不能指定已经存在的UID号
useradd: UID 1000 is not unique
[root@node1 ~]# useradd -o -u 1000 user10     # 指定-o参数可存在重复的UID
[root@node1 ~]# getent passwd user10
user10:x:1000:1006::/home/user10:/bin/bash
[root@node1 ~]# 

4.8.创建密码过期设置

[root@node1 ~]# useradd -f 11 user11  # 设置密码过期后多少天后不能登录
[root@node1 ~]# passwd -S user11
user11 LK 2025-06-09 0 99999 7 11 (Password locked.)
[root@node1 ~]# 

# 解释说明:
user11 LK 2025-06-09 0 99999 7 11 (Password locked.)
用户名 Locked(被锁定,没有设置密码) 最后修改日期 修改密码的最小间隔 密码最大有效期 警告期(提前多少天提示密码过期) 宽限期(密码过期后可宽限登录的天数)  状态注释(密码被锁定)

user13 PS 1970-01-01 0 99999 7 10 (Alternate authentication scheme in use.)
不同处解释: Password Set(密码已设置且有效) 用户使用‌替代认证方案‌

4.9.删除用户后再次创建说明

[root@node1 ~]# userdel user
[root@node1 ~]# useradd user
useradd: warning: the home directory already exists.  # 删除用户是其家目录不会删除,再次创建会提示已经存在
Not copying any file from skel directory into it.     # 不从skel目录复制任何内容;正常情况下会创建家目录,然后会复制一些内容到家目录,如.bashrc文件复制到家目录
Creating mailbox file: File exists                    # mailbox文件存在/var/spool/mail/,每个用户对应一个文件,如果文件存在就会提示该信息
[root@node1 ~]# 

4.10.-Z参数

[root@node1 ~]# id -Z      # 查看selinux 用户列表
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@node1 ~]# ps -Z $$   # 查看selinux 用户列表
LABEL                              PID TTY      STAT   TIME COMMAND
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 15275 pts/5 Ss   0:00 -bash
[root@node1 ~]# 
[root@node1 ~]# semanage login -l   # 查看selinux用户与系统用户的关联列表
[root@node1 ~]# useradd -Z unconfined_u user10    # selinux用户与系统用户关联
Creating mailbox file: File exists
[root@node1 ~]# semanage login -l                 # 关联查看

Login Name           SELinux User         MLS/MCS Range        Service

__default__          unconfined_u         s0-s0:c0.c1023       *
root                 unconfined_u         s0-s0:c0.c1023       *
system_u             system_u             s0-s0:c0.c1023       *
user10               unconfined_u         s0-s0:c0.c1023       *
[root@node1 ~]# 

网站公告

今日签到

点亮在社区的每一天
去签到