首先查看一下您现在的防火墙状态:
systemctl status firewalld.service
然后查看一下selinux状态:
sestatus
(这里我截图截错了,这是我先修改了再截的)
然后查看一下selinux的配置文件:
vim /etc/sysconfig/selinux
现在编写一个脚本:
vim firewalld_selinux.sh
脚本内容如下:
#!/bin/bash
read -p "尊敬的异乡人,哦不……旅行者,您是否承诺在七天神像的指引下关闭防火墙和SELINUX(y/n)" m # m在这里只是一个变量,这里的m是读取了来自标准输入的数据,也>就是在这里会收到您输入的y或n
if [ ${m} == 'y' ] # ${m}正是引用了上一行代码中的变量m的值,也就是y或n。本行命令判断当m的值等于y时,执行下一行代码,否则执行else后的代码
then
echo "正在关闭..."
else
echo "这不是你我想要的答案,这是错误的"
exit
fi
#临时关闭sellinux
setenforce 0
if [ $? -ne 0 ]
then
echo "临时关闭selinux失败"
else
echo "临时关闭selinux成功"
fi
#禁用selinux(永久修改),在文件/etc/sysconfig/selinux改变了selinux的状态,重启虚拟机后生效
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux
if [ $? -ne 0 ]
then
echo "selinux关闭失败"
else
echo "selinux关闭成功(永久修改,需要重启虚拟机)"
fi
#临时关闭防火墙
systemctl stop firewalld
if [ $? -ne 0 ];then
echo "关闭防火墙失败"
else
echo "关闭防火墙成功"
fi
#关闭防火墙开机自启动,重启后生效
systemctl disable firewalld
if [ $? -ne 0 ] # $?意为上一条命令的退出状态。0表示没有错误,其他任何值表明有错误
then
echo "关闭防火墙开机自启动失败"
else
echo "关闭防火墙开机自启动成功(永久修改,需要重启虚拟机)"
fi
#询问是否重启虚拟机
read -p "是否现在就重启虚拟机(y/n)" x
if [ ${x} == 'y' ] # ${x}正是引用了上一行代码中的变量x的值,也就是y或n。本行命令判断当m的值等于y时,执行下一行代码,否则执行else后的代码
then
echo "正在重启虚拟机..."
reboot
else
echo "尊重您的选择,或许,您有您的考量,再见!"
exit
fi
脚本写完退出保存后,执行如下命令,给这个脚本添加执行权限:
chmod 755 firewalld_selinux.sh
执行之前写好的脚本:
./firewalld_selinux.sh
执行完成后再查看防火墙状态:
systemctl status firewalld.service
查看一下selinux状态:
sestatus
再查看一下selinux的配置文件:
vim /etc/sysconfig/selinux
前后对比发现,脚本执行成功,如果本篇文章对您有所帮助,希望您能关注支持我,我会一直发布虚拟机相关实验文章,或许那些文章也对您有所帮助。如果对本片文章有什么问题或补充,欢迎在下方评论留言,我会时常来看的,并对我所能回答的进行回答。谢谢您的支持!