rpm包下载地址:Index of /6.8/os/x86_64/Packages
第一步安装ftp server和client端 对应pm包
rpm -ivh vsftpd-2.2.2-11.el6.x86_64.rpm
rpm -ivh ftp-0.17-54.el6.x86_64.rpm
第二步修改配置文件
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO 改成no
chroot_local_user=YES 去注释
修改ftp默认21端口
vi /etc/vsftpd/vsftpd.conf
listen_port=9021
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
pasv_promiscuous=YES
修改 vi /etc/selinux/config 文件
改成
SELINUX=disabled
执行 setenforce 0
第三步添加防火墙端口
firewall-cmd --zone=public --add-port=9021/tcp --permanent
firewall-cmd --zone=public --add-port=30000-30999/tcp --permanent
firewall-cmd --reload
systemctl restart firewalld
保存
第四步创建ftp用户
useradd -s /sbin/nologin -d /data/ftp mapabc
mapab是用户名 /data/ftp 是家目录
修改密码
passwd mapabc 一般设置和用户名一样
然后给家目录修改权限,否则你无法上传文件
chmod o+w /data/ftp
chown mapabc ftp
重启ftp
service vsftpd restart
设置开机启动
chkconfig vsftpd on
第五步错误排查
ftp登陆时报错,530 Login incorrect.Login failed.
1.cat /etc/passwd,查看你登陆的账户主目录和登陆shell对应的是什么,我的是/sbin/nologin
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
2.查看cat /etc/shells是否有你用户的主目录和登陆shell,没有进行添加,保存,退出
添加 /sbin/nologin这行
重启ftp
service vsftpd restart
重新登录
下面追加一键自动安装脚本
本人使用的服务器大都情况不能直接连外网,提前下载rpm包
将rpm 包上传至 /home/ftpinstall 目录,使用以下脚本自动安装
#!/usr/bin/bash
function changeConfig{
# 修改配置
sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
setenforce 0
# 修改 vsftpd.conf 配置
sed -i '/^anonymous_enable=YES/canonymous_enable=no' /etc/vsftpd/vsftpd.conf
sed -i '/^#chroot_local_user=YES/cchroot_local_user=YES' /etc/vsftpd/vsftpd.conf
sed -i '$a\use_localtime=YES' /etc/vsftpd/vsftpd.conf
sed -i '$a\reverse_lookup_enable=NO' /etc/vsftpd/vsftpd.conf
# 修改ftp 端口
sed -i '$a\listen_port=9021' /etc/vsftpd/vsftpd.conf
sed -i '$a\pasv_enable=YES' /etc/vsftpd/vsftpd.conf
sed -i '$a\pasv_min_port=30000' /etc/vsftpd/vsftpd.conf
sed -i '$a\pasv_max_port=30999' /etc/vsftpd/vsftpd.conf
sed -i '$a\pasv_promiscuous=YES' /etc/vsftpd/vsftpd.conf
service vsftpd restart
# 添加防火墙端口
status=$( systemctl status firewalld.service | grep Active | awk '{print $2}' )
if (( $status==active ));then
echo "防火墙状态开启"
firewall-cmd --zone=public --add-port=9021/tcp --permanent
firewall-cmd --zone=public --add-port=30000-30999/tcp --permanent
firewall-cmd --reload
systemctl restart firewalld
else
echo "防火墙状态关闭"
fi
# 创建 ftp 家目录
mkdir -p /data/ftphome
useradd -s /sbin/nologin -d /data/ftphome ftpuser
echo 'ftpuser'| passwd --stdin ftpuser
sed -i '$a\/sbin/nologin' /etc/shells
#然后给家目录修改权限,否则你无法上传文件
chmod o+w /data/ftphome
cd /data
chown ftpuser ftphome
# 重启ftp 并设置开机自启动
service vsftpd restart
chkconfig vsftpd on
}
#判断vsftpd 有无安装
rpm -qa vsftpd >/home/ftpinstall/a.txt
if [ -s /home/ftpinstall/a.txt ];then
echo "vsftpd 已经安装"
rm -rf /home/ftpinstall/a.txt
else
cd /home/ftpinstall
rpm -ivh vsftpd-2.2.2-11.el6.x86_64.rpm
sleep 3
changeConfig
fi
rpm -qa ftp >/home/ftpinstall/b.txt
if [ -s /home/ftpinstall/b.txt ];then
echo "ftp 客户端 已经安装"
rm -rf /home/ftpinstall/b.txt
else
cd /home/ftpinstall
rpm -ivh ftp-0.17-54.el6.x86_64.rpm
sleep 3
changeConfig
fi