1 、实训内容
(1)创建1个组群账户,取名stugrp,设置GID=610;
(2)批量创建50个用户stu001,stu002,…,stu050,设置其UID=510,511,512,…,559。并设置GID=610,设置用户主目录为/home/stu001,… ,/home/stu050,
设置shell为/bin/bash。
2 、设计要求
(1)请分析下面几种不同解决方案的实现过程;选取两种方案分析各自优缺点。
(2)将以上两个方案运行结果截图放到课程设计报告中。
(3)根据要求编写课程设计报告(WORD文档)上交。
3 、设计思路
批量创建用户,必须在建立用户后,考虑为用户设置初始密码。以下提供了几种方法,请设计一个shell程序,列出菜单选择一种方法实现批量用户添加。添加用户数由键盘输入(小于100),并输入用户名前缀,如stu,wrk等等,则用户名为stu01,stu02,……,wrk01,wrk02,……。
方法一:通过直接修改用户信息文件方式,即修改组信息文件/etc/group和用户信息文件/etc/passwd、用户加密口令信息文件/etc/shadow等。此种方法亦可以通过shell程序实现,不必直接用编辑程序修改用户信息文件。
方法二:使用批量添加用户口令newusers,需要建立用户信息文件user.txt,步骤是:
(1)先用groupadd添加一个组用户stugrp:
(2)用vi编辑用户信息文件user.txt
编辑完成,检查无误后保存并退出vi。
(3)使用newusers命令批量建立用户:
(4)为批量设置用户初始口令,编辑口令文件userpw.txt,设每个用户初始密码均设置为stu123。
编辑完成,检查无误后保存并退出vi。
(5)执行下属命令完成初始密码建立工作:
方法三:通过shell编程方法实现批量用户添加
基本原理:应用useradd命令循环添加用户实现批量用户添加,然后,生成密码信息文件,在执行useradd命令后,执行一条如下命令:
echo “$uname:stu123”>>usrpw.txt
批量建立用户初始密码。由于passwd命令必须由键盘输入密码并重复输入,因此不适宜在shell程序中使用passwd命令。步骤如下:
(1) 画出程序流程图
(2)编制shell程序脚本文件adduser.sh
根据流程图,很容易写出shell脚本文件。
(3)对脚本文件添加可执行属性
(4)执行脚本文件
方法四:可先通过循环输出语句构造用户信息文件和密码信息文件,然后直接应用newusers命令批量建立用户,用chpasswd命令批量设置初始密码。
关键技术:用echo命令和重定向输出构造用户信息文件和密码信息文件。
(1)(瞎编)方法一可以使用shell程序采用for循环、while循环或if循环逐个创建用户与修改密码,有点是容易实现,缺点是占用系统资源大;
方法三是使用shell程序,批量创建完用户名与路径写在一个txt文档里,再创建一个密码文件写在txt文档,采用批量创建用户的命令创建,有点是占用资源小,缺点是编辑文档的shell代码容易出错。
方法一源代码:(无调试硬编可能会错)
#/bin/bash uid=500 groupadd -g 610 stugrp for((i=1;i<51;i++)) do if [ "$i" -lt 10 ] then uname=stu0$i else uname=stu$i fi useradd -g stugrp -s /bin/bash -d /home/$uname -m $uname echo “stu123”|passwd $uname done
方法三源代码:
#/bin/bash
uid=500
gid=610
groupadd -g $gid stugrp
for((i=1;i<51;i++))
do
if [ "$i" -lt 10 ]
then
uname=stu0$i
else
uname=stu$i
fi
let "uid=uid+1"
echo $uname:x:$uid:$gid:$uname:/home/$uname:/bin/bash>>user.txt
echo $uname:stu123>>userpw.txt
done
echo "用户与密码文本生成成功"
newusers < user.txt #读取user.txt文本创建用户
pwunconv #暂时取消shadow加密
chpasswd < userpw.txt #读取userpw.txt为用户设置密码
pwconv #恢复shadow加密
echo "创建成功"
bash执行完出查询到批量创建的50个用户
运行结果:



