恭喜你已经完成了第一关的挑战,现在你已经学会了如何创建一个新用户和删除一个已经存在的用户,接下来,我们一起学习为新创建的用户设置登录密码。
本关的任务是新创建一个用户,并设置登录密码。
通过本关学习,你将掌握如下知识点:
Linux
中用户登录密码存放地以及方式passwd
命令修改用户密码chpasswd
命令修改用户密码用户密码存放地及方式
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
是不存在密码的。
使用passwd命令修改用户密码
命令格式如下:
passwd [命令参数] 参数
常见命令参数:
-d
删除密码-l
停止账号使用S
显示密码信息passwd
必须以root
权限才能执行,如果是普通用户想执行passwd
时,需要在命令前加sudo
命令来提升权限为root
权限。
案例演示
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
用户的密码部分已经为加密过后的密文。
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
用户是没有密码的。
使用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权限。
案例演示
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:~$ _
编程要求
根据右侧窗口命令行内的提示,在Begin - End
区域内进行命令行语句补充,具体任务如下:
newUser
passwd
命令为用户newUser
设置登录密码注意:本平台执行环境默认以root
账户登录,所以执行的所有命令都是以root
权限执行。
评测说明
补充完命令行后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
开始你的任务吧,祝你成功!
志向不过是记忆的奴隶,生气勃勃地降生,但却很难成长。
#!/bin/bash
#创建newUser新用户
#***********begin*************#
useradd newUser # 新创建一个用户newUser
#************end**************#
#在符号<<前输入设置用户密码的命令(命令与<< EOF保持在同一行),
# 密码输入在下一行,确认密码输入在下下行
#例如:
#command << EOF
#password
#password
#EOF
#***********begin*************#
passwd newUser << EOF # 使用passwd命令为用户newUser设置登录密码
000000
000000
EOF
#************end**************#
欢迎大家也来头歌和我一起学习Linux从入门到精通喔!加油!年轻人!