文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供
FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。
ftp是一个协议,有许多的具体的实现,在linux比较常用的一个就是vsftpd
安装也比较简单
yum install -y vsftpd
看一下目录结构
[root@localhost vsftpd]# tree /etc/vsftpd/
/etc/vsftpd/
├── ftpusers ##列在此文件中的用户 均禁止使用ftp服务
├── user_list ##访问控制名单 可以做白名单或者黑名单
├── vsftpd.conf ##配置文件
└── vsftpd_conf_migrate.sh
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=no #####是否允许匿名用户登录
#
# Uncomment this to allow local users to log in.
local_enable=YES ###是否允许本地用户登录
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES ###是否允许本地用户对ftp服务器文件拥有写权限,默认允许
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022 ########本地用户 掩码默认077
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES ####是否允许匿名用户上传文件 需要打开write_enable=yes 默认yes
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES #####是否允许匿名用户创建新文件夹
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES ####是否激活目录欢迎信息功能,当用户首次访问服务器的时候ftp显示欢迎功能 欢迎信息是通过该目录下的.message文件获得的 此文件保存自定义欢迎信息,由用户自己建立
#
# The target log file can be vsftpd_log_file or xferlog_file.
# This depends on setting xferlog_std_format parameter
xferlog_enable=YES ####是否让系统自动维护和下载日志文件 默认情况该日志文件为/var/log/vsftpd.log也可以通过xferlog_file对日志文件路径进行设定
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES #####是否设定ftp服务器将启用ftp数据端口的连接请求
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES #####设置想要改变的上传文件的属主和下一个选项配合使用
#chown_username=whoever #####设想要改变的上传文件属主,如果需要输入一个系统用户名可以吧上传的文件都改成root whoever任何人
#
# The name of log file when xferlog_enable=YES and xferlog_std_format=YES
# WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
#xferlog_file=/var/log/xferlog#########设定系统维护记录的ftp服务器上传和下载情况的日志文件
#
# Switches between logging into vsftpd_log_file and xferlog_file files.
# NO writes to vsftpd_log_file, YES to xferlog_file
xferlog_std_format=YES##是否以表真的xferlog格式书写传输日志文件默为/var/log/xferlog,也可以通过xferlog_file选项对其进行设定 默认no
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600####设置数据传输中断间隔时间,此语句表示空闲的用户会话中断时间为600秒,即当数据传输结束后,用户连接FTP服务器的时间不应超过600秒。可以根据实际情况对该值进行修改
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120####设置数据连接超时时间,该语句表示数据连接超时时间为120秒
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure####运行vsftpd需要的非特权系统用户,缺省是nobody
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES####是否识别异步ABOR请求。,如果FTP client会下达“async ABOR”这个指令时,这个设定才需要启用,而一般此设定并不安全,所以通常将其取消
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES####### 是否以ASCII方式传输数据。默认情况下,服务器会忽略ASCII方式的请求。启用此选项将允许服务器以ASCII方式传输数据不过,这样可能会导致由"SIZE /big/file"方式引起的DoS攻击
#ascii_download_enable=YES
# 此文件需用户自己创建,一行一个email address即可
#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES###### 黑名单设置。如果很讨厌某些email address就可以使用此设定来取消他的登录权限,可以将某些特殊的email address抵挡住。
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails# 当上面的deny_email_enable=YES时,可以利用这个设定项来规定哪些邮件地址不可登录vsftpd服务器
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_local_user=YES
#chroot_list_enable=YES###### 用户登录FTP服务器后是否具有访问自己目录以外的其他文件的权限,设置为YES时,用户被锁定在自己的home目录中,vsftpd将在下面chroot_list_file选项值的位置寻找chroot_list文件,必须与下面的设置项配合
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list# 被列入此文件的用户,在登录后将不能切换到自己目录以外的其他目录,从而有利于FTP服务器的安全管理和隐私保护。此文件需自己建立
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES#### 是否允许递归查询。默认为关闭,以防止远程用户造成过量的I/O
#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=YES# 是否允许监听。 如果设置为YES,则vsftpd将以独立模式运行,由vsftpd自己监听和处理IPv4端口的连接请求
#
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
# sockets, you must run two copies of vsftpd with two configuration files.
# Make sure, that one of the listen options is commented !!
#listen_ipv6=YES##### 设定是否支持IPV6。如要同时监听IPv4和IPv6端口,则必须运行两套vsftpd,采用两套配置文件,同时确保其中有一个监听选项是被注释掉的
pam_service_name=vsftpd设置PAM外挂模块提供的认证服务所使用的配置文件名,即/etc/pam.d/vsftpd文件
# 此文件中file=/etc/vsftpd/ftpusers字段,说明了PAM模块能抵挡的帐号内容来自文件/etc/vsftpd/ftpusers中
userlist_enable=YES### 是否允许ftpusers文件中的用户登录FTP服务器,默认为NO
# 若此项设为YES,则user_list文件中的用户允许登录FTP服务器
# 而如果同时设置了userlist_deny=YES,则user_list文件为黑名单
tcp_wrappers=YES# 是否使用tcp_wrappers作为主机访问控制方式。
# tcp_wrappers可以实现linux系统中网络服务的基于主机地址的访问控制
# 在/etc目录中的hosts.allow和hosts.deny两个文件用于设置tcp_wrappers的访问控制
# 前者设置允许访问记录,后者设置拒绝访问记录。
# 如想限制某些主机对FTP服务器192.168.57.2的匿名访问,编缉/etc/hosts.allow文件,如在下面增加两行命令:
# vsftpd:192.168.57.1:DENY 和vsftpd:192.168.57.9:DENY
# 表明限制IP为192.168.57.1/192.168.57.9主机访问IP为192.168.57.2的FTP服务器
# 此时FTP服务器虽可以PING通,但无法连接
userlist_deny=NO#### 设置是否阻扯user_list文件中的用户登录FTP服务器,默认为YES