一个操作系统安全的核心组件就是用户账户管理,Linux
是个多用户多任务的操作系统,所有要使用系统资源的用户都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
多用户多任务操作系统就是指可以在系统上建立多个用户,而同一时间内可以允许多个用户同时登录同一系统去完成不同的任务,而这些同时登录的用户互不影响。
例如:某台运行Linux
的操作系统的服务器上有3
个用户同时登录,分别是root
、www
和mysql
,在同一时间内,root
用户可能正在执行查看系统日志的功能,www
用户可能正在修改网页程序,而mysql
用户可能正在对mysql
数据库进行操作。这3
个用户互不影响,有条不紊的进行着自己的工作,而每个用户之间不能越权访问,比如www
用户不能执行mysql
用户的SQL
查询操作。因此,Linux
中不同用户具有不同的权限,每个用户是在自己的权限范围内完成不同的任务,Linux
正是通过权限的划分和管理,实现了多用户多任务的运行机制。
通过本实训学习,你将掌握Linux
用户权限切换、创建/删除新用户、用户密码管理。
第1关:创建/删除新用户
任务描述
恭喜你已经完成了Linux
入门的实训,接下来让我们一起来学习Linux
中用户的管理,本关主要讲解如何在Linux
中创建和删除用户。
本关的任务是新创建一个用户,并将一个已经存在的用户删除掉。
相关知识
为了完成本关任务,你需要掌握如下知识:
Linux
创建用户命令Linux
删除用户命令
Linux创建用户命令
Linux
中使用useradd
命令来创建一个新用户。
命令格式格式:useradd [命令参数] 参数
常见命令参数:
- -d<登入目录>:指定用户登入时的启始目录;
- -D:查看或变更预设值;
- -g<群组>:指定用户所属的群组;
- -m:自动建立用户的登入目录;
- -M:不要自动建立用户的登入目录;
- -s:指定用户登入后所使用的
shell
。
useradd
必须以root
权限才能执行,如果是普通用户想创建一个新用户时,需要在命令前加sudo
命令来提升权限为root
权限。
案例演示
1 . 查看useradd
系统默认属性值,使用命令useradd -D
。
笔者使用的系统是Ubuntu16.04
,useradd
系统默认值如下所示:
参数 | 说明 |
---|---|
GROUP | 指新创建的用户将被添加到用户组ID为100的公共用户组中 |
HOME | 指新创建的用户将在/home目录下创建一个HOME账户 |
INACTIVE | 指当密码逾期时,用户将不会被禁用 |
EXPIRE | 指新创建的用户不会在设定日期被设置为逾期 |
SHELL | 指新创建的用户使用/bin/sh(也就是bash)作为默认shell |
SKEL | 指系统会将/etc/skel目录中的内容复制到新创建的用户的HOME目录 |
CREATE_MAIL_SPOOL | 指系统不会在邮件目录中创建一个文件用于新创建用户账户接受邮件 |
2 . 使用useradd
命令新创建一个用户test
,并且自动建立用户的登入目录。
在背景介绍中,我们了解到,Linux
中用户信息是保存在/etc/passwd
文件中,我们可以使用命令tail /etc/passwd
命令查看/etc/passwd
文件最后10行中是否存在刚刚新创建的test
用户信息。
Linux删除用户命令
Linux
中使用userdel
命令来删除一个已经存在的用户。
命令格式:userdel [命令参数] 参数
常见命令参数:
- -f:强制删除用户,即使用户当前已登录;
- -r:删除用户的同时,删除与用户相关的所有文件。
userdel
必须以root
权限才能执行,如果是普通用户想使用该命令时,需要在命令前加sudo
命令来提升权限为root
权限。
案例演示
1 . 使用userdel
命令删除一个已经存在的用户test
,并且自动删除其家目录文件。
因为系统默认是不会给新创建的用户自动创建一个文件夹用于用户账户接收邮件,所以在使用userdel -r
命令删除的时候会提醒/var/mail/test
文件夹不存在。
编程要求
根据右侧窗口命令行内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
- 新创建一个用户
newUser
,并自动创建其登录目录; - 删除系统已经存在的用户
oldUser
,并自动删除其关联的登录目录; - 将当前工作目录切换到新创建的用户
newUser
家目录; - 使用
pwd
命令打印出当前工作目录。
注意:本平台执行环境默认以root
账户登录,所以执行的所有命令都是以root
权限执行。
评测说明
补充完命令行后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
开始你的任务吧,祝你成功!
人若有志,万事可为!
#!/bin/bash
#在以下部分写出完成任务的命令
#***********begin*************#
useradd -m newUser
userdel -r oldUser
cd /home/newUser
pwd
#************end**************#
第2关:Linux 用户密码管理
任务描述
恭喜你已经完成了第一关的挑战,现在你已经学会了如何创建一个新用户和删除一个已经存在的用户,接下来,我们一起学习为新创建的用户设置登录密码。
本关的任务是新创建一个用户,并设置登录密码。
相关知识
通过本关学习,你将掌握如下知识点:
Linux
中用户登录密码存放地以及方式- 怎么使用
passwd
命令修改用户密码 - 怎么使用
chpasswd
命令修改用户密码
用户密码存放地及方式
Linux中用户的登录密码是存放在/etc/shadow
文件中,/etc/shadow
文件中存放的是加密过后的密码,所以在/etc/shadow
文件中看到的密码是加密过后的密文。
看下笔者的电脑中/etc/shadow
文件存放的内容格式。
可以看到第一个冒号前是用户名,用户名是以明文的方式存放。
在第一个冒号和第二个冒号之间存放的是加密过后的密码,密码是以密文的方式存放,其中密文是由用户密码和其它信息加密后组成的,这里不做详细讲解,我们只需要知道如果第一个冒号和第二个冒号之间是*
或者!
或者空,则表示该用户没有密码,否则,则表示该用户是有密码。
例如:用户名fzm
是存在密码,而mysql
是不存在密码的。
使用passwd命令修改用户密码
命令格式:passwd [命令参数] 参数
常见命令参数:
- -d 删除密码;
- -l 停止账号使用;
- -S 显示密码信息。
passwd
必须以root
权限才能执行,如果是普通用户想执行passwd
时,需要在命令前加sudo
命令来提升权限为root
权限。
案例演示
1: 使用useradd
命令来新创建一个用户,使用passwd
命令来设置登录密码。
使用useradd
命令创建一个新用户(test
),此时test
用户是没有密码的,所以使用tail -n 1 /etc/shadow
命令查看/etc/shadow
文件的最后一行可以看出test
用户密码部分为!
。
使用passwd
命令为test
用户设置密码时,可以看到需要输入两次密码,目的是为了确保两次输入的密码一致。当设置完密码后,可以看到/etc/shadow
文件中test
用户的密码部分已经为加密过后的密文。
2: 使用passwd
命令来清除用户的密码。
使用passwd
命令清除用户test
的登录密码,使用tail -n 1 /etc/shadow
命令查看/etc/shadow
文件的最后一行可以看出test
用户密码部分为空,此时test
用户是没有密码的。
使用chpasswd命令修改用户密码
chpasswd
命令通常是用于批量修改用户密码,从标准输入批量读取成对的用户名和密码,其中输入的用户名和密码的格式为**用户名:密码
**。
例如要批量更新用户密码,将用户名和密码写入到一个文件中,格式如下所示:
然后执行执行如下命令来更新密码:
sudo chpasswd < batch.txt
<
符号表示输入重定向,接下来的实训中我们会详细的介绍。
命令格式:chpasswd [命令参数] 参数
常见命令参数
- -e:输入的密码是加密后的密文;
- -h:显示帮助信息并退出。
chpasswd
必须以root
权限才能执行,如果是普通用户执行时,需要在命令前加sudo
命令来提升权限为root
权限。
案例演示
1: 使用chpasswd
命令来更新用户登录密码。
chpasswd
是从键盘不断的读入指令,我们可以使用Ctrl+D
组合键来结束键盘输入。
编程要求
根据右侧窗口命令行内的提示,在Begin - End
区域内进行命令行语句补充,具体任务如下:
- 新创建一个用户
newUser
; - 使用
passwd
命令为用户newUser
设置登录密码;
注意:本平台执行环境默认以root
账户登录,所以执行的所有命令都是以root
权限执行。
评测说明
补充完命令行后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
开始你的任务吧,祝你成功!
志向不过是记忆的奴隶,生气勃勃地降生,但却很难成长。
#!/bin/bash
#创建newUser新用户
#***********begin*************#
#************end**************#
#在符号<<前输入设置用户密码的命令(命令与<< EOF保持在同一行), 密码输入在下一行,确认密码输入在下下行
#例如:
#command << EOF
#password
#password
#EOF
#***********begin*************#
useradd newUser
passwd newUser
passwd newUser<< EOF
hahahaha
hahahaha
EOF
#************end**************#
第3关:Linux用户权限切换
任务描述
恭喜你已经顺利的通过了前两关的挑战,现在你已经学会了如何创建一个新用户和删除一个已经存在的用户,以及如何修改一个用户的登录密码,接下来,我们一起学习不同用户之间的切换。Linux
系统运行多个用户同时登录系统,也运行多个用户间的进行切换。Linux
中使用whoami
命令来查看当前登录系统的用户名。
本关的任务是新创建一个用户,并设置其登录密码,然后登录新创建的用户。
相关知识
通过本关学习,你将掌握如下知识点:Linux
用户登陆的三种方式
图形化界面登录
Linux
中添加用户后,用户在图形界面登录系统的方式和Windows
一样,都是选择要登录的用户后直接输入登录密码即可。
案例演示
1: 添加一个新用户,并且设置登录密码,然后在图形界面登录。
使用login
命令登录
login
命令是让用户登录系统,可通过它的功能随时更换登入身份。当/etc
目录里含名称为nologin
的文件时,系统只允许root
帐号登入系统,其他用户一律不准登入。
当使用login
命令登录系统后,可以使用logout
命令或者exit
命令来退出当前用户登录,返回到登录前的用户状态。
命令格式:login [命令参数] 参数
参数为登录的用户名,可以不输入登录的用户名,直接输入login
命令后回车,然后根据提示再输入用户名和密码。
常见命令参数
- -p:告诉login指令不销毁环境变量;
- -h:指定远程服务器的主机名。
login
必须以root
权限才能执行,如果是普通用户执行时,需要在命令前加sudo
命令来提升权限为root
权限。
案例演示
1: 使用login
命令来登录系统(文件/etc/nologin
不存在)。
首先查看当前登录的用户名是fzm
。
使用newUser
用户来登录系统,然后查看当前登录的用户名。
使用logout
或者exit
命令退出newUser
用户,然后在查看当前登录用户是否为fzm
。
2: 使用login
命令来登录系统(文件/etc/nologin
存在)。
首先查看当前登录的用户名是fzm
。
在/etc
目录下新创建一个nologin
文件,使用如下命令创建:
sudo touch /etc/nologin
使用普通用户newUser
来登录系统,查看是否可以登录成功。
发现使用newUser
用户是无法登录系统的,只有使用root
用户才能登录系统。
使用su
命令切换用户身份
su
命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号的密码。
当使用su
命令切换用户后,使用exit
命令退出当前身份,返回原有登录用户身份。
注:如果当前用户身份是root
,则使用su
命令切换到其他用户的时候不需要相应用户的密码
命令格式:su [命令参数] 参数
参数为登录的用户名,如果没有参数,则默认切换为root
用户。
常见命令参数
-c<指令>
或--command=<指令>
:执行完指定的指令后,即恢复原来的身份;-l
或--login
:改变身份时,也同时变更工作目录,以及HOME
,SHELL
,USER
,logname
。此外,也会变更PATH变量;-m
,-p
或--preserve-environment
:变更身份时,不要变更环境变量;-s<shell>
或--shell=<shell>
:指定要执行的shell
。
su
命令所有使用者都可以执行。
案例演示
1: 使用su
命令切换当前用户身份(不改变当前工作目录)。
首先查看当前登录的用户名是fzm
,当前工作目录是/home/fzm
。
切换当前用户为newUser
用户,然后查看当前用户身份和当前工作目录。
使用exit
命令退出newUser
用户,然后在查看当前登录用户身份和当前工作目录。
2: 使用su
命令切换当前用户身份(改变当前工作目录)。
首先查看当前登录的用户名是fzm
,当前工作目录是/home/fzm
。
切换当前用户为newUser
用户,然后查看当前用户身份和当前工作目录。
使用exit
命令退出newUser
用户,然后在查看当前登录用户身份和当前工作目录。
编程要求
根据右侧窗口命令行内的提示,在Begin - End
区域内进行命令行语句补充,具体任务如下:
- 新创建一个用户newUser,并且设置登录密码;
- 使用su命令切换当前用户身份为newUser,并且执行whoami指令,然后恢复原来的身份。
注意:本平台执行环境默认以root
账户登录,所以执行的所有命令都是以root
权限执行。
评测说明
补充完命令行后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
开始你的任务吧,祝你成功!
人的理想志向往往和他的能力成正比。
#!/bin/bash
#创建newUser新用户
#***********begin*************#
#************end**************#
#在符号<<前输入设置用户密码的命令(命令与<< EOF保持在同一行), 密码输入在下一行,确认密码输入在下下行
#例如:
#command << EOF
#password
#password
#EOF
#***********begin*************#
useradd newUser
passwd newUser << EOF
hahahaha
hahahaha
EOF
#************end**************#
#使用su命令切换当前用户身份为newUser,并且执行whoami指令,然后恢复原来的身份;
#提示使用su命令的-c参数完成
#***********begin*************#
su -c whoami newUser
#************end**************#