快速上手Linux核心命令(十一):Linux用户相关命令_run useradd -g inspur -m inspur -u 2000

Linux用户相关命令
前言

上一篇中已经预告,我们这篇主要说一说Linux中用户相关的命令。
可能各位小伙伴用的Windows会比较多一点,在Windows操作系统中,我们知道有Administrator用户,Administrator 是Windows系统中的管理员用户,有着最高的权限。
用户登录Administrator后可以创建Gust等用户,修改密码并且给Gust用户分配相应的权限。
同样的在Linux中,root就相当于Administrator用户,具有着最高权限。登录root 用户可以创建用户、修改用户密码、给用户分配角色等等。
下面思维导图中列出了我们需要掌握的19个命令
在这里插入图片描述

useradd 创建用户

1、简介

useradd 命令用户创建新的用户或者更改用户信息

2、原理
在这里插入图片描述

3、语法格式

useradd [参数选项] [用户名]
或
useradd -D [参数选项]

4、参数说明
① 不加选项-D参数

参数选项参数说明
-c comment加上备注信息,会保存到passwd备注栏中(第五列)
-d home_dir新用户每次登录时使用的家目录
-e expire_date用户终止日期
-f inactive_days用户过期几日后永久停权
-g initial_group指定用户对应的用户组。用户组必须是系统现在已存在的名词
-G group,[…]定义此用户为多个不同组的成员。每个用户组使用逗号(,)分割
-m用户目录如不存在则自动建立
-M不建立家目录,优先于、etc/login.defs文件设定。【创建虚拟用户时一般不需要建立家目录,部署应用服务时则需要创建虚拟用户】
-n默认情况下用户的用户组和用户名称是相同的。通过该参数,就不会生成与用户名一样的用户组了
-s shell用户登录后使用的Shell名称。默认不填写,系统会使用配置文件(/etc/default/useradd)中的预设值
-u uid用户ID值。这个值是唯一的

② 加-D选项参数

参数选项参数说明
-b defalut_home定义用户家目录的基本目录,当用户家目录不存在时,此目录将作为家目录生效
-e defalut_expire_date用户账号停止日期
-f defalut_inactive用户过期几日后停权
-g defalut_group新用户起始用户组名或ID。用户组名必须为现已存在的名称
-s default_shell用户登录后使用Shell名称

5、实践操作
① 不加任何参数添加用户

# 创建xiezhrspace 用户
[root@xiezhr ~]# useradd xiezhrspace
# /home/ 路径下新生成一个xiezhrspace 目录。这个就是xiezhrspace用户的家目录
[root@xiezhr ~]# ls -ld /home/xiezhrspace
drwx------ 2 xiezhrspace xiezhrspace 4096 Aug 29 23:05 /home/xiezhrspace

在前面我们说过创建一个新用户会在/etc/shadow、/etc/group 和/etc/gshsdow 文件中生成相关信息,具体是不是这样的呢?
我们去看一看(●’◡’●)

# 在创建用户时候没有指定密码,但是shadow还是生成了一行信息
[root@xiezhr ~]# grep -w xiezhrspace /etc/shadow
xiezhrspace:!!:19233:0:99999:7:::

# 创建用户时,默认会创建与用户名同名的用户组
[root@xiezhr ~]# grep -w xiezhrspace /etc/group
xiezhrspace:x:1002:

#组密码文件中也会增加一条信息
[root@xiezhr ~]# grep -w xiezhrspace /etc/gshadow
xiezhrspace:!::

② 创建一个组,并将新建用户归于这个组

# 创建一个gid 为808 的用户组
[root@xiezhr ~]# groupadd -g 808 xiezhrgroup
# 创建一个uid为908的用户xietest,并将用户归于xiezhrgroup组
[root@xiezhr ~]# useradd -g xiezhrgroup -u 908 xietest
# 查看用户信息
[root@xiezhr ~]# id xietest
uid=908(xietest) gid=808(xiezhrgroup) groups=808(xiezhrgroup)

③ -M -s参数的使用(在生产环境中部署Nginx、MySQL等服务经常使用

# -M 不创建见目录
# -s 指定登录后的Shell
# /sbin/nologin 表示禁止登陆
[root@xiezhr ~]# useradd -M -s /sbin/nologin xiaofang
[root@xiezhr ~]# ls -ld /home/xiaofang
ls: cannot access /home/xiaofang: No such file or directory
[root@xiezhr ~]# grep -w xiaofang /etc/passwd
xiaofang:x:1003:1003::/home/xiaofang:/sbin/nologin

/etc/passwd 文件说明

xiaofangx10031003/home/xiaofang/sbin/nologin
用户名称账号密码账号UID账号组GID用户说明用户家目录shell解释器
usermod 修改用户信息

1、简介

usermod 命令用于修改系统已经存在的用户账号信息

2、语法格式

usermod [参数选项] [用户名]

3、参数选项

参数参数说明
-c comment修改用户password文件中用户的说明栏,与useradd -c 功能相同
-d home_dir修改用户的家目录 与useradd -d 功能相同
-e expire_date修改用户终止日期 与useradd -e 功能相同
-f inactive_days修改用户过期后几日永久停权 与useradd -f 功能相同
-g initial_group修改用户对应的用户组 与useradd -g 功能相同
-G group,[…]修改此用户为多个不同组的成员 与useradd -G功能相同
-m用户目录如果不存在则自动建立
-M不建立用户家目录。一般创建虚拟用户时不建立家目录。不是nginx、redis等服务是需要创建虚拟用户
-n默认情况下,用户的用户组与用户的名称相同
-s shell修改用户登入后使用的Shell名称 与useradd -s 功能相同
-u uid修改用户的ID值 与useradd -u 功能相同
-a追加用户到用户组 仅与-G参数连用
-l修改用户账号名称
-L锁定用户密码,不让用户改密码
-U解除密码锁定

4、实践操作
将前面创建的xiezhr 用户的用户注释修改为“测试用户”,UID 修改为888,归属修改为用户组root、xiezhr 成员,其Shell类型为/sbin/nologin,设置家目录为/home/xiezhr 用户过期时间为2022-10-02 ,过期后15天停权

[root@xiezhr ~]# usermod -u 888 -s /sbin/nologin -c "测试用户" -G root -e "2022/10/02" -f 30 -d /home/xiezhr xiezhr
[root@xiezhr ~]# grep -w xiezhr /etc/passwd
xiezhr:x:888:1001:测试用户:/home/xiezhr:/sbin/nologin
[root@xiezhr ~]# id xiezhr
uid=888(xiezhr) gid=1001(xiezhr) groups=1001(xiezhr),0(root)
[root@xiezhr ~]# grep -w xiezhr /etc/shadow
xiezhr:!!:19233:0:99999:7:30:19267:
[root@xiezhr ~]# chage -l xiezhr
Last password change                                    : Aug 29, 2022
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : Oct 02, 2022
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

userdel 删除用户

1、简介

userdel 命令用户删除指定的用户及与该用户相关的文件

2、语法格式

userdel [参属选项] [用户名]

3、参数选项

参数参数说明
-f强制删除用户,即使用户当前登录
-r删除用户的同时,删除与用户相关的所有文件

4、实践操作
① 不加参数删除用户

[root@xiezhr home]# tail -4 /etc/passwd
xiezhr:x:888:1001:测试用户:/home/xiezhr:/sbin/nologin
xiezhrspace:x:1002:1002::/home/xiezhrspace:/bin/bash
xietest:x:908:808::/home/xietest:/bin/bash
xiaofang:x:1003:1003::/home/xiaofang:/sbin/nologin
[root@xiezhr home]# ll /home/xietest/ -ld
drwx------ 2 xietest xiezhrgroup 4096 Aug 29 23:16 /home/xietest/
[root@xiezhr home]# userdel xietest 
[root@xiezhr home]# grep -w xietest /etc/passwd
[root@xiezhr home]# ll /home/xietest/ -ld
drwx------ 2 908 xiezhrgroup 4096 Aug 29 23:16 /home/xietest/

② 加 -r 参数删除用户及加目录

[root@xiezhr home]# ls -ld /home/xiezhr001/
drwx------ 2 xiezhr001 xiezhr001 4096 Sep  4 19:50 /home/xiezhr001/
[root@xiezhr home]# grep -w xiezhr001 /etc/passwd
xiezhr001:x:1005:1005::/home/xiezhr001:/bin/bash
[root@xiezhr home]# userdel -r xiezhr001 
[root@xiezhr home]# grep -w xiezhr001 /etc/passwd
[root@xiezhr home]# ls -ld /home/xiezhr001/
ls: cannot access /home/xiezhr001/: No such file or directory

注意

  • 在实际工作中,尽量不要使用userdel删除用户,只需要在/etc/passwd里注释用户就可以了。
  • 在使用**-r**参数一定要慎重,-r参数会将家目录下所有文件和目录都删除,该过程是不可逆的
groupadd 创建新的用户组

1、简介

groupadd 用于创建新的用户组。实际工作中一般也不用,因为useradd命令在创建用户的时候也会创建一个同名的用户组

2、语法格式

groupadd [参数选项] [用户组]

3、参数选项

参数参数说明
-g gid指定用户组的gid,除非接-o参数,否则ID值唯一且不为负,如果不指定-g参数,则gid从500开始
-f新增一个账户,强制覆盖一个已存在的组账号

4、实践操作
指定gid添加用户组

# 添加GID为123的test1用户组
[root@xiezhr ~]# groupadd -g 123 test
[root@xiezhr ~]# tail -l /etc/group
test:x:123:
[root@xiezhr ~]# tail -l /etc/gshadow
test:!::

groupdel 删除用户组

1、简介

groupdel 命令用户删除指定的用户组,一般不用

2、语法格式

groupdel [用户组]

3、实践操作
删除test用户组

[root@xiezhr ~]# groupdel test 
[root@xiezhr ~]# grep -w test /etc/group

passwd 修改用户密码

1、简介

passwd 命令用于修改用户密码及密码过期使劲啊等,工作中会经常用到。
普通用户和超级用户都可以运行passwd命令,普通用户只能更改自身密码,超级用户root则可以设置或修改所有用户的密码

2、语法格式

passwd [参数选项] [用户名]

3、参数选项

参数参数说明
-k为密码已经过期的用户更新有效期
-l锁定用户,被锁定的用户不能登录。仅root用户有此权限
–stdin从标准输入读取密码字符串
-u解除对用户的锁定,仅root用户有此权限
-d删除用户密码,使密码为空。仅root用户有此权限
-e是用户密码立即过期,将用户下次登录时强制要求用户修改密码。仅root用户有此权限
-n设置修改该密码的最短天数 。仅root用户有此权限
-x设置修改密码的最长天数。仅root用户有此权限
-w设置用户在密码过期前收到警告信息的天数。仅root用户有此权限
-i设置密码过期多少天后禁用账户。仅root用户有此权限
-S显示用户密码相关的简单描述。仅root用户有此权限

4、实践操作
① 修改用户自身密码

[root@xiezhr ~]# passwd # 修改root用户自身密码
Changing password for user root.      
New password:                          # 输入修改的密码,系统不会显示
Retype new password:                   # 再次输入密码
passwd: all authentication tokens updated successfully.       # 设置成功了

② 设置及修改普通用户密码

[root@xiezhr ~]# passwd xiezhr
Changing password for user xiezhr.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

③ 显示账号密码信息

[root@xiezhr ~]# passwd -S xiezhr
xiezhr PS 2022-09-05 0 99999 7 30 (Password set, MD5 crypt.)

④一条命令修改密码

[root@xiezhr ~]# echo "123456"|passwd --stdin xiezhr
Changing password for user xiezhr.
passwd: all authentication tokens updated successfully.

⑤ 设置xiezhr用户7天内不能更改密码,60天以后必须修改密码,过期10天通知用户,过期30天后禁止用户登录

[root@xiezhr ~]# passwd -n 7 -x 60 -w 10 -i 30 xiezhr
Adjusting aging data for user xiezhr.
passwd: Success

chage 修改用户密码有效期

1、简介

chage 命令用于查看或修改用户密码有效期

2、语法格式

chage [参数选项] [用户名]

3 、参数选项

参数参数说明
-d设置上一次密码更改的日期
-E账号过期的日期。日期格式:YYYY-MM-DD
-I设置密码过期多少天后禁用账户
-l显示账号有效期信息
-m密码可更改的最小天数。默认为0,即任何时候都可以修改
-M密码保持有效的最大天数
-W密码到期前,提前收到警告信息天数

4、实践操作
设置xiezhr用户7天内不能更改密码,60天以后必须修改密码,过期10天通知xiezhr 用户,过期30天后禁止用户登录

[root@xiezhr ~]# chage -m 7 -M 60 -W 10 -I 30 xiezhr

批量更新用户密码

1、简介

chpasswd 命令用于从标准输入中读取一定格式的用户名、密码来批量更新用户的密码,格式为“用户名:密码“

2、语法格式

chpasswd [参数选项]

3、参数选项

参数参数说明
-c默认格式是明文密码,使用-e参数则需要加密的密码

4、实践操作
批量修改密码

[root@xiezhr ~]# chpasswd # 输入chpasswd后,回车
xiezhr:123456               # 格式为用户名:密码
testxiezhr:123456           # 一行一个
	                        # 新行按Ctrl+D 结束

su 切换用户

1、简介

su 命令用户将当前用户切换到指定用户或以指定用户的身份执行命令或程序

2、语法格式

su [参数选项] [用户名]

3、参数选项

参数参数说明
-, -l, --login切换用户的同时,将用户的家目录/系统环境等重新按切换后的用户初始化
-c向Shell 传递单个命令

4、实践操作
① 切换到普通用户

# 切换到testxiezhr用户,不用输入密码即可切换
[root@xiezhr ~]# su - testxiezhr

②切换到root用户

# 虽然已经切换到了root用户,但是家目录还是testxiezhr。环境变量还是testxiezhr用户的,\*\*这种切换问题很严重\*\*
[testxiezhr@xiezhr ~]$ su root
Password:                          # 普通用户切换到root用户需要输入密码
[root@xiezhr testxiezhr]# pwd
/home/testxiezhr
# 正确切换方式
[root@xiezhr testxiezhr]# exit
exit
[testxiezhr@xiezhr ~]$ su - root
Password:                                               # 需要输入密码
Last login: Mon Sep  5 21:13:39 CST 2022 on pts/3
[root@xiezhr ~]# pwd
/root

注意:
[x] “su 用户名” 虽然能切换到对应用户,但切换后的环境变量信息还是切换之前用户的
[√] ** ”su - 用户名“ 不但可以切换到对应用户,还能将环境变量一起切换**

visudo 编辑sudoers文件

1、简介

visudo命令是专门用来编辑 /etc/sudoers这个文件的,同时提供语法检查等功能。 /etc/sudoers文件是sudo命令的配置文件。sudo命令在下一个命令你会看到。而为什么不用vi/vim来直接编辑/etc/sudoers文件呢? 因为如果使用vim 编辑sudoer文件时没有语法校验,编辑错了会导致授权无法生效

2、语法格式

visudo [参数选项]

3、参数选项

参数参数说明
-c手动执行语法检查

4、实践操作
①将xiezhr用户提权为root身份,testxiezhr 用户具有添加和删除用户的权限

# 以下命令相当于 vim /etc/sudoers 进行编辑sudoers文件
[root@xiezhr ~]# visudo

#在/etc/sudoers 文件中添加如下权限
xiezhr ALL=(ALL)        ALL                                     # 此行时将xiezhr用户提权为root身份
testxiezhr ALL=(ALL)     /usr/sbin/useradd, /usr/sbin/userdel   # 授予可以以root身份添加和删除用户权限

上面操作说明

待授权的用户或组机器=(授权角色)可以执行的命令
testxiezhrALL=(ALL)/usr/sbin/useradd,/usr/sbin/userdel

② 通过-c参数校验语法是否正确
通过① 我们已经对xiezhr用户和testxiezhr用户做了不同的授权,那么怎么判断授权的语法是否正确呢

[root@xiezhr ~]# visudo -c
/etc/sudoers: parsed OK
/etc/sudoers.d/90-cloud-init-users: parsed OK

直接root用户下操作不就可以了么?为什么要通过sudo授权呢?
我们希望一个用户具有root权限去干活,但是又不希望这个用户威胁系统安全。

sudo 以另一个用户身份执行命令

1、简介

sudo 命令可以让普通用户拥有超级用户的权限去执行指定的命令或程序。普通用户不需要知道root密码就可以得到授权,授权我们在上面已经说过

2、语法格式

sudo [参数选项]

3、参数选项

参数参数说明
-l列出当前用户可以执行的命令。只有在sudoers 文件里的用户才能使用该选项
-h列出使用方法,并退出
-H将环境变量中的HOME(家目录)指定为要变更身份的使用者家目录
-V显示版本信息,并退出
-vsudo在第一次执行时,或者在N分钟内没有执行,则会询问密码,参数用于重新做一次确认
-u以指定用户的身份执行命令
-k清除时间戳上的实践,下次再次使用sudo时要再此输入密码
-K与k类似,同时还删除时间戳文件
-b在后台执行指定命令
-p更改询问密码时的提示语
-e不执行命令,而是修改文件,相当于sudo edit

4、sudo 工作原理
sudo工作原理

5、实践操作
创建一个testuser 用户,并对testuser进行sudo授权管理。授权完成后sudo操作

# 1、创建testuser 用户
[root@xiezhr ~]# useradd testuser
# 2、将testuser 用户密码修改为\*\*\*\*\*\*


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 29
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值