Linux脚本编程:sudo命令下新建和校验用户信息

Linux脚本编程:sudo命令下新建和校验用户信息

题目要求

让普通用户使用sudo命令编写一个脚本,脚本内容如下:
(1)新建一个名为 test 的用户,设置默认 shell 为 /bin/sh,默认 home 目录为 /tmp/test,默认组为 mail,同时设置密码为123456。
(2)校验以上设置是否成功。
注意:脚本要分别在本地和云端成功运行。

编程平台

本地

本地操作系统:Windows 10
本地虚拟机运行平台:VMware Workstation Pro 14
本地虚拟机镜像:CentOS-7-x86_64-Minimal-1908.iso

云端

云服务器提供商:阿里云计算有限公司
Linux发行版本及版本号:CentOS 7.6 64位

代码实现

#! /bin/bash
# 设置环节

# 新建用户并设置默认shell、默认home目录和默认组
sudo useradd -s /bin/sh -d /tmp/test -g mail test
# 设置用户密码
echo 123456 | sudo passwd test_201727010619 --stdin

# 校验环节

# 查看/etc/passwd中是否有符合条件的用户名、home目录和shell信息,并记录结果到ush
ush=`cat /etc/passwd | cut -d: -f1,6,7 | grep 'test:/tmp/test:/bin/sh' | wc -l`
# 查看是否有符合条件的默认组信息,并记录结果到gro
gro=`sudo groups test | grep mail | wc -l`
# 查看是否能用密码123456登录新建用户
get_user(){ # 定义切换用户函数,用于使用密码登陆待检测用户
su - test << EOF
${test_pwd} # 输入密码
whoami # 查看当前用户名
EOF
}
test_pwd=123456 # test用户的登陆密码
user=`get_user > /dev/null` # 执行切换函数,并保存返回的字符串信息
pass=0 # 记录密码检查结果
if [[ ${user} =~ "test" ]];then # 判断是否能成功登陆test用户,即查看get_user函数中whoami的返回值是否为test
    pass=1
fi

# 检查三个校验变量是否都为1,是则说明校验通过
if [ $ush -eq 1 -a $gro -eq 1 -a $pass -eq 1 ];then
	echo 1
else
	echo 0
fi

如果文章内容出错或者您有更好的解决方法,欢迎到评论区指正和讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值