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
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