写点什么

Linux 用户密码管理

用户头像
在即
关注
发布于: 3 小时前
Linux用户密码管理
  • 任务描述

  • 相关知识

  • 用户密码存放地及方式

  • 使用 passwd 命令修改用户密码

  • 案例演示使用 chpasswd 命令修改用户密码

  • 案例演示

  • 编程要求

  • 评测说明


1.任务描述

现在你已经学会了如何创建一个新用户和删除一个已经存在的用户,接下来,我们一起学习为新创建的用户设置登录密码。

本次的任务是新创建一个用户,并设置登录密码。


2.相关知识

通过本次学习,你将掌握如下知识点:

  • Linux中用户登录密码存放地以及方式

  • 怎么使用passwd命令修改用户密码

  • 怎么使用chpasswd命令修改用户密码


3.用户密码存放地及方式

Linux 中用户的登录密码是存放在/etc/shadow文件中,/etc/shadow文件中存放的是加密过后的密码,所以在/etc/shadow文件中看到的密码是加密过后的密文。

看下/etc/shadow文件存放的内容格式:

[root@wxz ~]# sudo tail /etc/shadow

nobody:*:16659:0:99999:7:::

avahi-autoipd:!!:18856::::::

systemd-bus-proxy:!!:18856::::::

systemd-network:!!:18856::::::

dbus:!!:18856::::::

polkitd:!!:18856::::::

tss:!!:18856::::::

postfix:!!:18856::::::

sshd:!!:18856::::::

newUser:!!:18856:0:99999:7:::

[root@wxz ~]#

可以看到第一个冒号前是用户名,用户名是以明文的方式存放。

在第一个冒号和第二个冒号之间存放的是加密过后的密码,密码是以密文的方式存放,其中密文是由用户密码和其他信息加密后组成的,这里不做详细讲解,我们只需要知道如果第一个冒号和第二个冒号之间*或!或者空,则表示该用户没有密码。

例如:看下笔者的电脑中/etc/shadow 文件存放的内容格式:


可以看到用户名fzm是存在密码的,而mysql是不存在密码的。


4.使用 passwd 命令修改用户密码

命令格式如下:

passwd [命令参数] 参数

常见命令参数:

  • -d 删除密码

  • -l 停止账号使用

  • S 显示密码信息

passwd 必须以root权限才能执行,如果是普通用户想执行passwd时,需要在命令前加sudo命令来提升权限为root权限。


5.案例演示

1.使用 useradd 命令来新创建一个用户,使用 passwd 命令来设置登录密码。

[root@wxz ~]# useradd zj

[root@wxz ~]# tail -n 1 /etc/shadow

zj:!!:18857:0:99999:7:::

[root@wxz ~]# passwd zj

更改用户 zj 的密码 。

新的 密码:

无效的密码: 密码是一个回文

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

[root@wxz ~]# tail -n 1 /etc/shadow

zj:$6$raW95dfO$G4TPwdrNSTfyO7.jvTlxxPwQm6hzSygGmNSMHOmsx1uKwiaYgpsq6LRyJr4cIUx/bkWrspzyU8E9gZ598LUd3.:18857:0:99999:7:::

[root@wxz ~]#

使用 useradd 命令创建一个新用户(zj),此时 zj 用户是没有密码的,所以使用 tail -n 1 /etc/shadow 命令查看/etc/shadow 文件的最后一行可以看出 zj 用户密码部分!


使用 passwd 命令为 zj 用户设置密码时,可以看到需要输入两次密码,目的是为了确保两次输入的密码一致。当设置完密码后,可以看到/etc/shadow 文件中 zj 用户的密码部分已经为加密过后的密文。

2.使用 passwd 命令来清除用户的密码

[root@wxz ~]# passwd -d zj

清除用户的密码 zj。

passwd: 操作成功

[root@wxz ~]# tail -n 1 /etc/shadow

zj::18857:0:99999:7:::


使用passwd命令清除用户zj的登录密码,使用tail -n 1 /etc/shadow命令查看/etc/shadow文件的最后一行可以看出zj用户密码部分为空,此时zj用户是没有密码的。


6.使用 chpasswd 命令修改用户密码

chpasswd命令通常是用于批量修改用户密码,从标准输入批量读取成对的用户名和密码,其中输入的用户名和密码的格式为用户名:密码

例如:要批量更新用户密码,将用户名和密码写入到一个文件中,格式如下:

[root@wxz ~]# cat batch.txt

user1:passwd1

user2:passwd2

user3:passwd3

user4:passwd4

[root@wxz ~]#

然后执行如下命令来更新密码:

sudo chpasswd < batch.txt

<符号表示输入重定向,接下来的实训中我们会详细的介绍。命令格式如下:

chpasswd [命令参数] 参数


常见命令参数:

  • -e:输入的密码是加密后的密文

  • -h:显示帮助信息并退出

chpasswd必须以root权限才能执行,如果是普通用户执行时,需要在命令前加 sudo 命令来提升权限为 root 权限。


7.案例演示

1.使用 chpasswd 命令来更新用户登录密码。

fzm@ubuntu:~$ sudo -n 1 /etc/shadow

test::17532:0:999999:7:::

fzm@ubuntu:~$ sudo chpasswd

test:newpasswd

fzm@ubuntu:~$ sudo tail -n 1 /etc/shadow

test :$6$5zdD0f 5F $3s21FLPXQ3QCyC jkw.20ezMKgEqsc 9W6 7ne 7MKK iCfD ig6SSZ2Bhtq I 7VSKNE/RSVy IRNhHMpOMFM9hHno

iVO: 1 7532:0:99999: 7: : :

fzm@ubuntu:~$ _


8.编程要求

根据右侧窗口命令行内的提示,在Begin - End区域内进行命令行语句补充,具体任务如下:

  • 新创建一个用户newUser

  • 使用passwd命令为用户newUser设置登录密码


注意:本平台执行环境默认以root账户登录,所以执行的所有命令都是以root权限执行。


9.评测说明

补充完命令行后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。


#!/bin/bash


#创建 newUser 新用户 #begin**#useradd newUser # 新创建一个用户 newUser#end**#


#在符号<<前输入设置用户密码的命令(命令与<< EOF 保持在同一行),

密码输入在下一行,确认密码输入在下下行

#例如:#command << EOF#password#password#EOF#begin**#passwd newUser << EOF # 使用 passwd 命令为用户 newUser 设置登录密码 000000000000EOF#end**#


//欢迎大家也来和我一起学习 Linux 从入门到精通喔!


发布于: 3 小时前阅读数: 3
用户头像

在即

关注

记录学习进度 2021.02.27 加入

文章基本上都是课上学到的知识结合自己见解进行写作,如有错误,欢迎各位大牛指出。

评论

发布
暂无评论
Linux用户密码管理