Centos7 搭建ftp服务器
安装了几次 遇到了N多坑 终于是安装好了 ,下文为我的正确安装步骤…
1.先查询本机是否安装ftp服务器
rpm -qa |grep vsftpd
如果安装过会出现版本信息
[root@localhost etc]# rpm -qa |grep vsftp
vsftpd-3.0.2-25.el7.x86_64
卸载命令:
rpm -e vsftpd-3.0.2-25.el7.x86_64
2.yum 安装
yum -y install vsftpd
2.1查看安装位置 whereis vsftpd
配置文件所在位置: /etc/vsftpd/
-rw------- 1 root root 126 Jan 20 14:08 ftpusers
-rw------- 1 root root 361 Oct 31 2018 user_list
-rw-r--r-- 1 root root 667 Jan 20 14:35 vsftpd.conf
-rwxr--r-- 1 root root 338 Oct 31 2018 vsftpd_conf_migrate.sh
2.2文件解释
#ftp服务器黑名单 用于指定哪些用户不能访问FTP 服务器
ftpusers
#指定允许使用vsftpd 的用户列表文件。 白名单
user_list
#vsftpd 的核心配置文件
vsftpd.conf
# 脚本文件 不用管,也别动...
vsftpd_conf_migrate.sh
3.启动 ftp 服务:
systemctl start vsftpd
3.1查看监听的端口号: 默认为21
netstat -antup | grep vsftpd
3.2查看防火墙的状态:
firewall-cmd --state
内网可以直接关闭防火墙 外网只要开放对应端口号以及在安全组中配置对应端口即可
3.3关闭防火墙命令
sytemctl disable firewalld
exmaple:防火墙常见命令
安装Firewall命令:
yum install firewalld firewalld-config
Firewall开启常见端口命令:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=53/udp --permanent
Firewall关闭常见端口命令:
firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --remove-port=443/tcp --permanent
firewall-cmd --zone=public --remove-port=22/tcp --permanent
firewall-cmd --zone=public --remove-port=21/tcp --permanent
firewall-cmd --zone=public --remove-port=53/udp --permanent
批量添加区间端口
firewall-cmd --zone=public --add-port=4400-4600/udp --permanent
firewall-cmd --zone=public --add-port=4400-4600/tcp --permanent
开启防火墙命令:
systemctl start firewalld.service
重启防火墙命令:
firewall-cmd --reload 或者 service firewalld restart
查看端口列表:
firewall-cmd --permanent --list-port
禁用防火墙
systemctl stop firewalld
设置开机启动
systemctl enable firewalld
停止并禁用开机启动
sytemctl disable firewalld
查看状态
systemctl status firewalld或者 firewall-cmd --state
3.4检查关闭Selinux
根据需求选择临时或者永久关闭
临时关闭:
[root@localhost ~]# getenforce
Enforcing
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
永久关闭:
[root@localhost ~]# vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
重启服务reboot
4.修改Vsftpd.conf 配置文件
4.1配置本地用户访问 vsftpd 服务 以及用户家目录(可直接copy我的)
如果觉得不放心可备份之前的配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpbak.conf
我的配置文件如下:
阿里云中安装FTP
# Example config file /etc/vsftpd/vsftpd.conf
#关闭远程连接
anonymous_enable=NO
#本地用户登录开启
local_enable=YES
#读写权限开启
write_enable=YES
local_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
#日志开启
xferlog_enable=YES
connect_from_port_20=YES
#YES,允许数据传输时使用PASV模式
#设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意。默认值为0。
#把端口范围设在比较高的一段范围内,6000-7000,将有助于安全性的提高
pasv_enable=YES
pasv_min_port=6000
pasv_max_port=7000
#chown_uploads=YES
#chown_username=whoever
#日志路径
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
#客户端连接时间
idle_session_timeout=6000
#数据连接时间 针对上传下载
data_connection_timeout=1200
#这四个为权限模块 这样配置当chroot_list中的用户可以离开ftp家目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
#白名单开启
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
local_root=/var/ftp/pub
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
注意的是防火墙以及安全组需要开启pasv所需要的端口
公司中内网安装FTP
# Example config file /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
idle_session_timeout=6000
data_connection_timeout=1200
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
local_root=/ftp
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
4.2详细解释以及对应操作
chroot_list 在安装时是没有的,这个需要自己创建
配置文件COPY我的则在 /etc/vsftpd/下使用以下命令
touch chroot_list
并编辑chroot_list 文件 将 root添加到其中
:wq保存退出
当搭配我上边配置文件时标识着 此文件中的用户 例如 我在chroot_list中添加了root 那么root用户则可离开家目录在系统中任何地方可使用ftp进行上传下载
编辑黑名单ftpusers 注释掉root用户
重启vsftp
systemctl restart vsftpd
用FileZilla Client 链接测试
发现** 登录不了…
5.最后一步
那是因为还少一个命令
yum install ftp
安装好后 重启ftp ,本地测试一波 ftp localhost
[root@localhost vsftpd]# ftp localhost
Trying ::1...
ftp: connect to address ::1Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 3.0.2)
Name (localhost:root):
根据提示输入账户和密码
Name (localhost:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
能够进来则说明成功了!!!!!!!!!!
现在用FileZilla Client 链接测试
普通用户使用ftp
#创建目录
mkdir -p /var/ftp/html
#添加系统用户
useradd -g root -M -d /var/ftp/html -s /sbin/nologin ftptest
#配置权限
chown -R ftptest:root /var/ftp/html
#设置密码
passwd ftptest
#添加测试文件
cd /var/ftp/html && echo "this is ftptest" >ftptest.txt
#使用FileZilla Client 测试
#此用户则只能操作 /var/ftp/html如果需要设置其离开根目录 则在chroot_list中添加用户名
user_list中添加用户名
exmaple:ftp 操作命令
#开机启动
systemctl enable vsftpd
#启动服务
systemctl start vsftpd
#重启服务
systemctl restart vsftpd
#停止服务
systemctl stop vsftpd
#查看服务器状态
systemctl status vsftpd