这次和上次不一样,不创建用户
要求和上次一样,只是多了一个创建用户和删除用户
创建用户可以把一个目录相当于一个用户。为了防止重复创建用户还可以进行判断有没有这个用户。创建用户后的密码可以以用户/密码这样的格式输入进一个密码文件里面,这样可以一个账号一个密码,不会出现随便输一个密码都可以登录。只需要在输入账号的时候去查一下有没有这个用户/账号就可以了(不过其实有更好的方法,就是直接在用户文件下建一个密码文件就可以了,这样还更方便,只不过那时候没想到,做完后缓了好久突然想到的,但是又懒得改了)
登录用户可以直接在用户目录里创建文件,保证输入三次就失败,重启也没用。
登录用户------->输入账号------->输入密码
正确就直接登录,错误就在用户下创建一个文件,三次后就不让你登录了(会给你提示还有几次)
输入账号那边如果没有账号会提示你没有
删除用户就直接删掉用户,然后在密码本哪里删掉你记录(就是这里做完后我才想起来我可以直接在用户里面做一个密码文件的,这样就只需要删除这个用户就可以了,但是我懒得改了,心态崩了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
退出就直接退出就可以了。
对了我这边代码是直接让他睡眠一个小时,你完全可以在登录那边写一个执行程序的,执行你这个用户的默认程序,就是创建用户的时候在里面创建一个类似桌面的程序,然后当你打开你的账号直接跳到那个桌面程序上,也可以接着创建文件目录或者干嘛,这也是为什么我说的是虚拟平台的原因。
#############################################################################
#/bin/bash
sc(){
read -p "请输入要删除的用户名:" S
[ -e /gan/ml/zhuce/yh/$S ]
if [ $? -eq 1 ] ;then
echo "没有此用户"
continue
else
read -p "请输入密码:" s
grep $S/$s /gan/ml/zhuce/mm # &> /dev/null
if [ $? -eq 0 ] ;then
read -p "再次确认是否删除用户$S(y/n)" q
case $q in
y)
mmzh=$S/$s
rm -rf /gan/ml/zhuce/yh/$S
sed -i "/$S\/$s/d" /gan/ml/zhuce/mm
echo "以删除此用户"
;;
n)
continue
;;
*)
echo "无此选项"
;;
esac
else
continue
fi
fi
}
yh(){
read -p "请输入要创建的用户名:" N
[ -e /gan/ml/zhuce/yh/$N ]
if [ $? -eq 0 ] ;then
echo "已有账户不可创建"
continue
else
mkdir /gan/ml/zhuce/yh/$N
read -p "请输入密码:" P
read -p "请再次输入密码:" p
if [ $P == $p ]; then
echo "注册成功"
echo $N/$P >> /gan/ml/zhuce/mm
else
echo "两次密码错误"
fi
grep $N/$P /gan/ml/zhuce/mm
if [ $? -eq 1 ] ;then
rm -rf /gan/ml/zhuce/yh/$N
fi
fi
}
dl(){
read -p "请输入用户名:" n
[ -e /gan/ml/zhuce/yh/$n ]
if [ $? -eq 1 ] ;then
echo "没有此用户"
continue
else
i=0
while :;
read -p "请输入密码:" M
do
let i++
grep $n/$M /gan/ml/zhuce/mm &> /dev/null
if [ $? -eq 0 ] ;then
echo "登录成功"
sleep 1d
else
touch /gan/ml/zhuce/yh/$n/$i
[ -e /gan/ml/zhuce/yh/$n/3 ]
if [ $? -eq 0 ] ;then
echo "拒绝访问"
return
fi
echo "密码错误,您还有$(expr 3 - $i)试错的机会,试错用完将锁死用户"
continue
fi
done
fi
}
while :
do
cat <<FOF
*******************
1,用户登录
2,用户注册
3,用户删除
4,退出登录
*******************
FOF
read -p "请输入你的选择:" num
case $num in
1)
dl
;;
2)
yh
;;
3)
sc
;;
4)
echo "退出登录"
exit
;;
*)
echo "无此选项"
;;
esac
sleep 1
clear
done