centos7.6下搭建ftp文件传输服务器
准备环境 centos7.6
提前关闭selinux 和firewalld防火墙
1.安装vsftp软件包
yum -y install vsftpd*
2.启动vsftpd服务器
systemctl restart vsftpd
systemctl enable vsftpd
3. 检查服务是否正常启动
ps -ef|grep vsftp && netstat -tunlp|grep 21
至此 匿名用户的ftp已经搭建完成
去windos客户端查看
/var/ftp/pub/ #linux服务上的原始目录
ftp://192.168.118.172/ #windos客户端访问的目录,没有用户名和密码
只能查看,下载无法创建文件和目录
如果需要在windos 端上传文件则需要修改配置文件
vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES #允许匿名用户上传
anon_mkdir_write_enable=YES #允许匿名用户创建目录
重启vsftp服务即可
systemctl restart vsftpd
chown -R ftp /var/ftp/pub/ #赋予子目录ftp用户所属组的权限
至此 可以匿名用户上传目录和文件,同时也可以下载 完成
接下来搭建最安全的以虚拟用户方式登录 ,vsftp配置虚拟用户
1.创建vsftpd使用的系统用户,主目录为/home/vsftpd,禁止ssh登录。创建之后所有虚拟用户使用这个系统用户访问文件。
useradd vsftpd -d /home/vsftpd -s /bin/false
2.创建虚拟用户主目录,比如虚拟用户叫ftp1。后续文件都放在这个目录下
mkdir -p /home/vsftpd/ftp1
3.指定虚拟用户的信息
vim /etc/vsftpd/loginusers.conf
ftp1
123456
#这样就创建了ftp1这个虚拟用户,密码为123456
4.根据这个文件创建数据库文件,并启动数据库文件
db_load -T -t hash -f /etc/vsftpd/loginusers.conf /etc/vsftpd/loginusers.db
chmod 600 /etc/vsftpd/loginusers.db
vim /etc/pam.d/vsftpd
#注释掉原来所有内容后,增加下面的内容
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers
5.增加虚拟用户的数据库的配置文件
mkdir /etc/vsftpd/userconf #创建虚拟用户配置文件目录
vim /etc/vsftpd/userconf/ftp1 #这里的文件名必须与前面指定的虚拟用户名一致
local_root=/home/vsftpd/ftp1/
write_enable=YES
6.修改主配置文件
vim /etc/vsftpd/vsftpd.conf #存在的修改,不存在的增加
anonymous_enable=NO #禁止匿名用户登录
chroot_local_user=YES #禁止用户访问除主目录以外的目录
ascii_upload_enable=YES #设定支持ASCII模式的上传和下载功能
ascii_download_enable=YES #设定支持ASCII模式的上传和下载功能
guest_enable=YES #启动虚拟用户
guest_username=vsftpd ## 虚拟用户使用的系统用户名
user_config_dir=/etc/vsftpd/userconf #虚拟用户使用的配置文件目录
allow_writeable_chroot=YES #最新版的vsftpd为了安全必须用户主目录(也就是/home/vsftpd/ftp1)没有写权限,才能登录
7重启vsftp服务
systemctl restart vsftpd
输入用户名和密码后客户端正常访问
可能会遇到的问题
1. ftp访问速度特别慢,加载半天
将 /etc/resolv.conf里面全部注释掉
2. 浏览器正常访问,以目录文件夹的形式无法访问
Windows 无法访问此文件夹,请确保输入的文件夹是正确的,并且你有权访问此文件夹。
请参照该地址排查https://jingyan.baidu.com/article/b7001fe1829deb0e7282ddb7.htmlhttps://jingyan.baidu.com/article/b7001fe1829deb0e7282ddb7.html
最后就能正常访问搭建的ftp拉
2020-04-29最完整的ftp搭建教程
最近写了一个一键安装的脚本
#!/bin/bash
#
echo "开始安装ftp客户端 账号zhangsan 密码123456 目录/data/vsftp"
yum -y install vsftpd &> /dev/null
systemctl restart vsftpd
systemctl enable vsftpd
netstat -tunlp|grep 21
if [ $? -eq 0 ];then
echo "ftp软件安装成功"
else
echo "ftp软件安装失败"
fi
mkdir -p /data/vsftp
useradd vsftpd -d /data/vsftp -s /bin/false
echo "修改配置文件"
tee /etc/vsftpd/zf-vsftp.conf <<EOF
zhangsan
123456
EOF
db_load -T -t hash -f /etc/vsftpd/zf-vsftp.conf /etc/vsftpd/zf-vsftp.db
chmod 600 /etc/vsftpd/zf-vsftp.db
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
tee /etc/pam.d/vsftpd <<EOF
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/zf-vsftp
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/zf-vsftp
EOF
#指定虚拟用户的配置信息
mkdir /etc/vsftpd/userconf/
tee /etc/vsftpd/userconf/zhangsan <<EOF
local_root=/data/vsftp/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF
# 增加目录的权限
chown -R vsftpd /data/vsftp
chmod -R 777 /data/vsftp
#修改著配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
tee /etc/vsftpd/vsftpd.conf <<EOF
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/userconf
allow_writeable_chroot=YES
pam_service_name=vsftpd
EOF
systemctl restart vsftpd