linux基本功系列之useradd命令实战

简介: linux基本功系列之useradd命令实战

在这里插入图片描述

@[toc]

前言🚀🚀🚀
想要学好Linux,命令是基本功,企业中常用的命令大约200多个,不管是写shell脚本还是管理操作系统,最常用的命令必须要牢牢掌握,像我们以前学乘法口诀一样,烂熟于心,唯有如此,才能打牢基础。
💓 知识最重要的是记忆
💓 入门须知: 想要人生从容,必须全力以赴,努力才是你最终的入场券🚀🚀🚀
💕 最后: 努力成长自己,愿我们都能在看不到的地方闪闪发光 ,一起加油进步🍺🍺🍺

一. useradd 命令介绍

王姨又来我家,张罗着要给我介绍对象。 我说自己还小,不想去相亲,那都不行,差点动手打我。
没法子,只能去相亲看看。 王姨说可以先处着,以后慢慢认识。

我就问了他一个问题: linux中useradd的参数有几个,他支支吾吾答不上来,我瞬间有了分手(还没牵手就分手)的理由: 很明显,我们合不来,因为词汇量不合适。

useradd命令来自于英文词组“User add”的全拼,其功能是用于创建并设置用户信息。
使用useradd命令可以自动的完成创建用户的信息、基本组、家目录等工作,并在创建的过程中对用户初始信息进行定制。

二. 语法格式及常用选项

我们可以用--help查看命令的参数及语法格式:如下:

[root@mufenggrow ~]# useradd --help
用法:useradd [选项] 登录
      useradd -D
      useradd -D [选项]

选项:
  -b, --base-dir BASE_DIR        新账户的主目录的基目录
  -c, --comment COMMENT         新账户的 GECOS 字段
  -d, --home-dir HOME_DIR       新账户的主目录
  -D, --defaults                显示或更改默认的 useradd 配置
 -e, --expiredate EXPIRE_DATE   新账户的过期日期
  -f, --inactive INACTIVE       新账户的密码不活动期
  -g, --gid GROUP                新账户主组的名称或 ID
  -G, --groups GROUPS            新账户的附加组列表
  -h, --help                    显示此帮助信息并推出
  -k, --skel SKEL_DIR            使用此目录作为骨架目录
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
  -l, --no-log-init                不要将此用户添加到最近登录和登录失败数据库
  -m, --create-home             创建用户的主目录
  -M, --no-create-home            不创建用户的主目录
  -N, --no-user-group            不创建同名的组
  -o, --non-unique                允许使用重复的 UID 创建用户
  -p, --password PASSWORD         加密后的新账户密码
  -r, --system                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录
  -s, --shell SHELL                新账户的登录 shell
  -u, --uid UID                    新账户的用户 ID
  -U, --user-group                创建与用户同名的组
  -Z, --selinux-user SEUSER        为 SELinux 用户映射使用指定 SEUSER

可以看到useradd的基本语法是:
useradd username
或者
useradd -d -u “UID” -g "初始组" -G "附加组" -s "登陆的shell” 用户

在创建的时候,选择自己需要的参数进行添加。

从useradd的帮助文档中,我们摘选中比较常用的选项:

在这里插入图片描述
其实默认情况下不加任何参数,也可以直接创建用户,同一个用户名只能创建一个用户,每个用户名不能重复。

三. 参考案例

3.1 不加任何参数创建用户

要创建一个用户名为 user1的用户:

[root@mufenggrow ~]# useradd user1
[root@mufenggrow ~]# id user1
uid=1000(user1) gid=1000(user1) 组=1000(user1)

我们来使用find查询下,创建一个用户到底创建了哪些目录和文件:

[root@mufenggrow ~]# find / -name user1
/var/spool/mail/user1
/home/user1

可以看到创建一个文件,是在/home目录下创建了一个目录user,作为家目录。
在/var/spool/mail下创建了一个user1作为邮件目录

除此之外在 /etc/passwd 和/etc/shadow中插入了两条信息:

[root@mufenggrow ~]# tail -n 1 /etc/passwd /etc/shadow
==> /etc/passwd <==
user1:x:1000:1000::/home/user1:/bin/bash

==> /etc/shadow <==
user1:!!:19373:0:99999:7:::
[root@mufenggrow ~]# 

所以 每次创建用户其实就是做了这四步操作。

3.2 创建不能登录系统且没有家目录的用户

-M 不建立用户的家目录
-s 指定用户的shell

linux系统中有多种shell,其中/bin/bash是默认的,使用它可以登录系统
而 倘若使用/sbin/nologin 是不能登录系统的。

我们来看下案例:

[root@mufenggrow ~]# useradd -M -s /sbin/nologin user2
[root@mufenggrow ~]# su - user2
su: 警告:无法更改到 /home/user2 目录: 没有那个文件或目录
This account is currently not available.

这里的: This account is currently not available. 表示此账户当前不可用

英语单词注释:

account    美[əˈkaʊnt]  账户,账目

currently 美[ˈkɜːrəntli] 当下,目前,现时
available 美[əˈveɪləbl] 可获得的,可以找到的,有空的

也就是我们刚刚创建的用户是不允许登录系统的,而且没有家目录。

3.3 创建一个用户,ID为2333

需要指定ID的时候,用到的就是-u参数,此时的u代表的user。

[root@mufenggrow ~]# useradd -u 2333 user3
[root@mufenggrow ~]# id user3
uid=2333(user3) gid=2333(user3) 组=2333(user3)

ID命令是用来查看当前用户的UID,GID和组的,判断一个用户是否存在,就可以用id命令,若不存在,echo $? 执行结果不为0

[root@mufenggrow ~]# id zhangsan
id: zhangsan: no such user
[root@mufenggrow ~]# echo $?
1

3.4 创建一个用户并指定其附加组

创建一个用户,他的所有者默认就是所有组的组名,但有时候一个用户可能在多个组里面,所以我们可以使用-G来指定附加组。

这就类似于一个财务,她的默认组是财务组,但有时候她也兼职前台,所以前台是她的附加组,一个用户可以又多个附加组。

[root@mufenggrow ~]# useradd -G root user4
[root@mufenggrow ~]# id user4
uid=2334(user4) gid=2334(user4) 组=2334(user4),0(root)
[root@mufenggrow ~]# useradd -G root,user1,user2 zhangsan
[root@mufenggrow ~]# id zhangsan
uid=2335(zhangsan) gid=2335(zhangsan) 组=2335(zhangsan),0(root),1000(user1),1001(user2)
[root@mufenggrow ~]# 

当我们需要指定多个用户组的时候,需要用“逗号”隔开。

3.5 创建用户并账户过期时间

-e参数是用来创建用户过期时间的,如果想查看用户的信息,可以使用 chage -l 参数。

[root@mufenggrow ~]# useradd -e "2023/02/14" mufenggorw

我们用chage -l 参数查看:

[root@mufenggrow ~]# chage -l mufenggorw
最近一次密码修改时间                :1月 16, 2023
密码过期时间                        :从不
密码失效时间                        :从不
帐户过期时间                          :2月 14, 2023
两次改变密码之间相距的最小天数        :0
两次改变密码之间相距的最大天数        :99999
在密码过期之前警告的天数    :7

从上面可以看到过期时间为: 2023年1月16日,与我们设置的日期一致。

3.6 与useradd相关的目录文件

  • /etc/passwd,用户账号信息。
  • /etc/shadow,用户密码加密。
  • /etc/group,群组资讯。
  • /etc/default/useradd,定义资讯。
  • /etc/login.defs,系统广义设定。
  • /etc/skel,内含定义档的目录。

关于这些目录的使用方法,会在Linux运维系列操作系统实战里面讲解,可以关注【运维系列操作系统实战】专栏,后续我会持续更新。

总结

💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~

请添加图片描述
在这里插入图片描述

相关文章
|
24天前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
55 8
|
6天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
32 14
Linux 10 个“who”命令示例
|
15天前
|
Linux 数据库
Linux中第一次使用locate命令报错?????
在Linux CentOS7系统中,使用`locate`命令时出现“command not found”错误,原因是缺少`mlocate`包。解决方法是通过`yum install mlocate -y`或`apt-get install mlocate`安装该包,并执行`updatedb`更新数据库以解决后续的“can not stat”错误。
30 9
|
14天前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
20天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
64 3
|
24天前
|
存储 运维 Linux
如何在 Linux 系统中使用 envsubst 命令替换环境变量?
`envsubst` 是 Linux 系统中用于替换文本中环境变量值的实用工具。本文分三部分介绍其工作原理、使用方法及实际应用,包括配置文件替换、脚本执行中环境变量替换和动态生成文件等场景,帮助用户高效利用 `envsubst` 进行开发和运维工作。
40 4
|
22天前
|
Linux
在 Linux 系统中,`find` 命令
在 Linux 系统中,`find` 命令
25 1
|
5月前
|
Linux
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
|
5月前
|
Linux
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
|
5月前
|
Linux
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的