CentOS7下ftp服务器搭建

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。

FTP协议包括两个组成部分,

其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,

用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。

在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。

此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

1.安装ftp服务

在centos7系统上

[root@lsx04-ftp ~]# yum install vsftpd -y
[root@lsx04-ftp ~]# rpm -qa |grep vsftpd       //查询已安装的软件过滤出vsftpd的信息//

得到:

vsftpd-3.0.2-25.el7.x86_64

安装成功

2.开启VSFTPD

开启服务

[root@lsx04-ftp ~]# systemctl start vsftpd

查询21端口

[root@lsx04-ftp ~]# netstat -nultp | grep 21

此时可以通过ip地址访问服务器(需要防火墙开放21端口,已经配置文件允许匿名访问)

3.配置ftp权限

[root@lsx04-ftp ~]# vi /etc/vsftpd/vsftpd.conf

添加或修改成

# 禁用匿名用户
anonymous_enable=NO

# 禁止切换根目录
chroot_local_user=YES

# 设置FTP主目录
local_root=/data/ftp

# 配置FTP被动模式的端口
pasv_min_port=30000
pasv_max_port=30000

重启vsftpd服务

4.创建FTP用户

在centos添加用户ftpuser

修改好密码后:

[root@lsx04-ftp ~]# usermod -s /sbin/nologin ftpuser   //限制其登录

为用户配主目录

5.SElinux配置

VSFTPD是一个FTP服务器程序,然后SELinux是CentOS的防火墙组件, vsftpd 默认被 SELinux 拦截

解决方法有两种:

方法1:

降低SElinux安全级别

vi /etc/sysconfig/selinux

设置SELINUX=enforcing改为SELINUX=permissive

重启vsftpd服务

方法2:

在linux中设置ftp允许访问

[root@lsx04-ftp ~]# getsebool -a | grep ftp

设置ftpd_full_access为on

[root@lsx04-ftp ~]# setsebool -P ftpd_full_access=on

重启vsftpd服务,即可正常访问FTP

备注:

[root@lsx04-ftp ~]# firewall-cmd --add-service=ftp --permanent  //添加ftp服务到防火墙

ftp配置文件说明:

anonymous_enable=NO  #允许匿名用户访问为了安全选择关闭
local_enable=YES   # 允许本地用户登录
write_enable=YES   # 是否允许写入
local_umask=022  # 本地用户上传文件的umask
dirmessage_enable=YES #为YES则进入目录时显示此目录下由message_file选项指定的文本文件(,默认为.message)的内容
xferlog_enable=YES #开启日志

xferlog_std_format=YES #标准格式
connect_from_port_20=YES
xferlog_file=/var/log/xferlog   #ftp日志目录

idle_session_timeout=6000 #设置客户端连接时间

data_connection_timeout=1200 #设置数据连接时间 针对上传,下载
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list #设置为YES则下面的控制有效
chroot_list_enable=YES #若为NO,则记录在chroot_list_file所指定的文件(默认是/etc/vsftpd.chroot_list)中的用户将被chroot在登录后所在目录中,无法离开.如果为YES,则所记录的用户将不被chroot.这里YES.
chroot_local_user=YES
userlist_deny=NO #若设置为YES则记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户将无法login,并且将检察下面的userlist_deny选项
userlist_enable=YES #若为NO,则仅接受记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户的login请求.若为YES则不接受这些用户的请求.
userlist_file=/etc/vsftpd/user_list #白名单
chroot_list_enable=YES
local_root=/var/ftp/pub #根目录
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES 
原文地址:https://www.cnblogs.com/JiaoTou/p/10764354.html