该脚本仅仅完成了匿名访问 由于本人做这个项目的时候遇到了太多问题 也可能是弟弟太菜了 特此专门编写一章来记录这次学习历程
1 关闭防火墙和selinux
systemctl stop firewalld #关闭防火墙
用getenforce获取selinux状态
如果selinux状态不为disabled 就修改/etc/selinux/config
将SELINUX=enforcing/SELINUX=permissive 改为SELINUX=disabled 然后重启 使SeLinux生效
2 安装和启动FTP
yum install vsftpd -y #安装vsftp
systemctl start vsftpd #开启vsftp
systemctl status vsftpd | grep Active | awk '{print $2}' #查看回显是否为active
3 配置vsftp
vsftpd的配置文件在/etc/vsftpd/vsftpd.conf下
vsftpd默认的共享文件夹为/var/ftp下的目录
这里一共三个点
a. 配置vsftpd.conf
vsftpd.conf配置里面的相关功能是以注释为开关的 所以开启就是去掉注释 关闭就是添加注释
打开anon_upload_enable=YES #功能为打开匿名用户的上传权限
打开anon_mkdir_write_enable=YES #功能为打开匿名用户创建目录的权限
echo "anon_other_write_enable=YES" >> /etc/vsftpd/vsftpd.conf #让匿名用户能删除和重命名
echo "anon_umask=000" >> /etc/vsftpd/vsftpd.conf
这里涉及一个安全问题linux系统文件权限分为421 4是r 读取权限 2是w 写入权限 1是x 执行权限这段代码就是如果你上传一个文件默认为777权限 添加这段代码就是777-000=777 可以通过这段代码更改匿名用户上传文件的权限
b. /var/ftp的权限
vsftpd会自动创建一个pub目录 匿名用户无法对其进行操作 这里我们创建一个目录并给予777权限
mkdir -m 777 /var/ftp/upload
chmod -R 777 /var/ftp #使其权限全为777
chmod a-w /var/ftp #这里是vsftp的安全问题 好像是18年更新后必须得这样才能成功启动 不然会显示500错误
c. 重启vsftp使其配置生效
ststemctl restart vsftpd
然后再次通过1来判断是否正常运行
下面代码是一键部署ftp 在虚拟机里执行后回到windows ping一下虚拟机 ping通了就可以进行ftp连接虚拟机了 也可以通过cmd 输入ftp IP 来检测 用户名 anonymous 密码为空 连接成功就ok了 可以实现windows和虚拟机linux的文件互传了
#!/bin/bash
#######################################
#Description : FTP Install Script
#Author : smh/873990866@qq.com
#Date : 2021_10_21
#Version : 1.5
#######################################
#STOP SELINUX_STATUS AND STOP FIREWALL
if [ "$(getenforce)" == "Enforcing" ];then
echo "SeLinux Status Is Enforcing,Please Reboot The computer to make SeLinux Stop."
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
exit 0
elif [ "$(getenforce)" == "Permissive" ];then
echo "SeLinux Status Is permissive,Please Reboot The computer to make SeLinux Stop."
sed -i "s/SELINUX=permissive/SELINUX=disabled/g" /etc/selinux/config
exit 0
else
echo "SeLinux Is Stop."
fi
systemctl stop firewalld
echo "Firewall Is Stop."
#INSTALL AND START VSFTP
install_start_vsftpd () {
yum -y install vsftpd >& /dev/null
#打开匿名用户创建目录的权限
sed -i 's/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g' /etc/vsftpd/vsftpd.conf
#打开匿名用户的上传权限
sed -i 's/#anon_upload_enable=YES/anon_upload_enable=YES/g' /etc/vsftpd/vsftpd.conf
#创建匿名用户的登录目录
mkdir -m 777 /var/ftp/upload
chmod -R 777 /var/ftp
chmod a-w /var/ftp
#设置匿名用户的登录目录
#echo "anon_root=/var/ftp/upload" >> /etc/vsftpd/vsftpd.conf
#打开匿名用户的删除和重命名权限
echo "anon_other_write_enable=YES" >> /etc/vsftpd/vsftpd.conf
echo "anon_umask=000" >> /etc/vsftpd/vsftpd.conf
systemctl start vsftpd
VSFTPD_STATUS=`systemctl status vsftpd | grep Active | awk '{print $2,$3}'`
if [ "${VSFTPD_STATUS}" == "active (running)" ];then
echo "vsftpd服务安装并启动成功"
else
echo "vsftpd安装成功但启动失败"
exit 0
fi
}
install_start_vsftpd
这里仅仅是匿名访问 后续如果有时间的话会更新添加用户密码然后通过pam认证来通过账号密码连接ftp 如果要开机自启的话可以百度ftp开机自启 如果有需要截图 方便理解的话可以给我留言 我看到了会添加照片 方便你们理解 下课了 不写了 大佬轻喷