开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第24天,点击查看活动详情
一、命令详解
1.1【功能说明】
useradd命令可以用于创建新的用户或者更改用户的信息。
1.2【语法格式】
[root@7bfe451a2fe1 ~]# useradd --help
Usage: useradd [options] LOGIN
useradd -D
useradd -D [options]
1.3【选项说明】
1、使用useradd常规添加用户工作原理流程
在使用useradd命令时,若不加任何参数选项,后面直接跟所添加的用户名,那么系统首先会读取/etc/login.defs(用户定义文件)和/etc/default/useradd(用户黑夜配置文件)文件中所定义的参数和规则,然后根据所设置的规则添加用户,同时还会向/etc/passwd(用户文件)和/etc/group(组文件)文件内添加新用户和新用户组记录,向/etc/shadow(用户密码文件)和/etc/gshadow(组密码文件)文件里添加新用户和组对应的密码信息的相关记录。同时系统还会根据/etc/default/useradd文件所配置的信息建立用户的家目录,并将/etc/skel中的所有文件(包括隐藏的环境配置文件)都复制到新用户的家目录中。
2、useradd不加选项-D的参数选项及说明
-c comment新用户passwd文件中的说明栏,冒号分隔后的第五列-d home_dir新用户每次登入时所使用的家目录-e expire_date用户终止日期,日期的指定格式为 yyyy-MM-dd-f inactive_days用户过期几日后永久停权。当值为0时用户立即被停权,而当值为-1时则关闭此功能,默认为-1-g initial_group指定用户对应的用户组。用户组名必须为系统现已存在的名称-G group,[...]定义此用户为多个不同组的成员。每个用户组使用逗号分隔,用户组名必须为系统现已存在的名称,默认为用户的起始用户组-m用户目录如不存在则自动创建-M不创建用户家目录,优先于/etc/login.defs文件设定。创建虚拟用户时一般不需要建立家目录,部署应用服务时则需要创建虚拟用户-n默认情况下用户的用户组与用户的名称是相同的。如果命令添加了-n参数,就不会生成与用户同名的用户组了-r此参数是用来建立系统用户的。系统用户的UID会比定义在系统档上的/etc/login.defs的UID_MIN要小。注意此用法下useradd所建立的用户不会创建用户家目录,也会忽略/etc/login.defs中定义的值。-s shell用户登入后使用的shell名称。默认值为空,这样系统会从/etc/default/useradd中取值-u uid用户的ID值,这个值必须是唯一的,除非-o选项,数字不可为负值。
二、使用范例
2.1 创建用户
创建一个用户,不添加任何参数创建用户
# 创建用户
useradd zhangsan
# 查看家目录 /home/zhangsan
ls -ld /home/zhangsan
# 查看用户目录 /etc/passwd
grep -w zhangsan /etc/passwd
# 分别查看/etc/shadow, /etc/group, /etc/gshadow
grep -w zhangsan /etc/shadow
grep -w zhangsan /etc/group
grep -w zhangsan /etc/gshadow
2.2 创建用户-指定UID和用户组
指定UID和用户组
# 先添加一个用户组sa并指定gid为801
groupadd -g 801 sa
# 创建用户指定uid为901 用户组为sa
useradd -u 901 -g sa lisi
# 验证一下
id lisi
2.3 创建虚拟用户-不建立家目录且禁止登录
在生产场景中部署Nginx、MySQL等服务时经常用到
useradd -M -s /sbin/nologin nginxuser
三、扩展知识
3.1 UID的范围
我们创建的普通账号是1000号以后,使用者自己创建和系统账号(通过-r参数)则一般是小于1000的。由于系统账号是用来进行运行系统所需服务的权限设置,所以系统账号默认都不会主动创建主文件夹的。
四、命令总结
- 2022/12/19 回到家里,空调坏了,而外面阳了一片没人来修,不会冻阳了吧