安装ftp服务器
参考文档:https://gnu-linux.readthedocs.io/zh/latest/Chapter02/90_vsftpd.html
帆软文档:https://help.fanruan.com/finereport/doc-view-2790.html
基础环境
第一步:安装
编辑`/etc/vsftpd/vsftpd.conf`
第二步:配置环境
编辑/etc/vsftpd.conf
匿名用户登录最小配置
# 不以独立模式运行
listen=NO
# 支持 IPV6,如不开启 IPV4 也无法登录
listen_ipv6=YES
# 匿名用户登录
anonymous_enable=YES
# 系统用户登录
local_enable=YES
# 对文件具有写权限,否则无法上传
write_enable=YES
# 允许匿名用户上传文件
anon_upload_enable=YES
# 允许匿名用户新建文件夹
anon_mkdir_write_enable=YES
# 匿名用户删除文件和重命名文件
anon_other_write_enable=YES
# 匿名用户的掩码(022 的实际权限为 666-022=644)
anon_umask=022
# 匿名用户访问路径
anon_root=/var/www/html/web
# 指定端口号
listen_port=5001
# 使用主机时间
use_localtime=YES
pam_service_name=vsftpd
如果希望本地账户也可以登录需要将
local_root
目录改为:可读可写或者可读可写可执行(chmod 777 目录
),这样这个目录就有足够权限去读写
配置相关
# ***********匿名用户相关***********
# 允许匿名访问
anonymous_enable=NO
# 不允许匿名用户上传文件,需要配合write_enable=yes
anon_upload_enable=NO
# 允许匿名用户创建目录
anon_mkdir_write_enable=NO
# 控制匿名用户对文件和文件夹的删除和重命名(自己添加,没有该配置)
anon_other_write_enable=NO
# 匿名用户上传文件权限
anon_umask=022
# 允许写入操作,否则不能上传文件
write_enable=YES
# 匿名用户的根目录。这个非常重要
anon_root=/var/www/html/web
# 匿名用户不要密码就靠这个
no_anon_password=YES
# 匿名登录后的使用者
ftp_username=ftpuser
# 是否允许本地用户,如root用户登陆。默认允许
local_enable=YES
# 设置本地用户登录所在的目录。默认配置文件中没有该配置项,本地用户登录FTP服务器后所在的目录为所登录用户的主目录,
# 如:对于root用户,则为/root目录,默认没有的
local_root=/home/ftpuser
# 本地用户上传文件权限
local_umask=022
# ******系统日志功能******
# 是否激活目录欢迎信息功能
dirmessage_enable=YES
# 默认日志文件为 /var/log/vsftpd.log
xferlog_enable=YES
# 服务器上传、下载的日志存储路径
xferlog_file=/var/log/vsftpd.log
# 以 xferlog 格式记录日志文件
xferlog_std_format=YES
# 是否将日志写入系统日志中
syslog_enable=NO
# ******系统设置******
# 指定端口号
listen_port=2222
# 是否开启监听
listen=NO
# 支持 IPV6,如不开启 IPV4 也无法登录
listen_ipv6=YES
# 数据传输中断间隔时间(以秒为单位)
idle_session_timeout=2
# 数据连接超时时间(以秒为单位)
data_connection_timeout=2
# 运行 vsftpd 需要的非特权系统用户
pam_service_name=vsftpd
# 是否使用主机的时间
use_localtime=YES
# ftp工具连接成功提示
ftpd_banner=欢迎使用Bunny FTP
# 是否启动限制用户的名单。YES为启用,NO禁用。默认禁用,防止切换到root目录这样服务器就是透明的不安全!!!
chroot_list_enable=NO
# 所有用户均不能切换到上级目录,如果关闭可以访问服务器中任意文件夹
chroot_local_user=YES
# 坑,添加以下配置。不添加此项,文件无法上传。报错:550 Permission denied。
# 新版本vsftpd加入了安全需求,切根不允许写,要添加这个配置并设置为YES才可以
allow_writeable_chroot=YES
# 是否允许递归查询
ls_recurse_enable=YES
# 是否阻止 user_list 文件中的用户登录服务器
userlist_deny=YES
# 是否阻止 ftpusers 文件中的用户登录服务器
userlist_enable=YES
# 开启主动模式后是否启用默认的 20 端口监听
# connect_from_port_20=YES
命令行解释
anonymous_enable
是否允许匿名登录服务器local_enable
是否允许本地用户登录服务器write_enable
是否允许本地用户具有写权限local_umask
本地用户的文件掩码local_root
系统用户登录路径anon_root
匿名用户登录路径chroot_local_user
是否锁定用户登录目录为其根目录anon_upload_enable
是否允许匿名用户上传文件,须开启 write_enable 选项anon_mkdir_write_enable
是否允许匿名用户创建新文件夹dirmessage_enable
是否激活目录欢迎信息功能xferlog_enable
如果启用此选项,系统将会记录服务器上传和下载的日志文件,默认日志文件为 /var/log/vsftpd.log,也可以通过 xferlog_file 选项设定xferlog_file=/var/log/vsftpd.log
服务器上传、下载的日志存储路径xferlog_std_format
以 xferlog 格式记录日志文件syslog_enable
是否将日志写入系统日志中connect_from_port_20=YES
开启主动模式后是否启用默认的 20 端口监听chown_uploads
是否允许改变上传文件的属主,与下面选项配合使用chown_username
改变上传文件的属主,输入一个系统用户名,whoever:任何人idle_session_timeout
数据传输中断间隔时间data_connection_timeout
数据连接超时时间nopriv_user=ftpsecure
运行 vsftpd 需要的非特权系统用户use_localtime
是否使用主机的时间,默认使用 GMT 时间,比北京时间晚 8小时,建议设定为 YESascii_upload_enable
以 ASCII 方式上传数据ascii_download_enable
以 ASCII 方式下载数据ftpd_banner
登录 FTP 服务器时显示的欢迎信息chroot_list_enable
用户是否具有访问自己目录以外文件的权限,设置为 YES 时,用户被锁定在自己的 home 目录中chroot_list_file=/etc/vsftpd/chroot_list
不能访问自己目录以外的用户名,需要和 chroot_list_enable 配合使用ls_recurse_enable
是否允许递归查询listen
是否让 vsftpd 以独立模式运行,由 vsftpd 自己监听和处理连接请求listen_ipv6
是否支持 IPV6,不开启IPv4也无法访问userlist_enable
是否阻止 ftpusers 文件中的用户登录服务器userlist_deny
是否阻止 user_list 文件中的用户登录服务器tcp_wrappers
是否使用 tcp_wrappers 作为主机访问控制方式max_client
允许的最大客户端连接数,0 为不限制max_per_ip
同一 IP 允许的最大客户端连接数,0 为不限制local_max_rate
本地用户的最大传输速率(单位:B/s),0 为不限制anon_max_rate
匿名用户的最大传输速率
自定义用户访问
userlist_enable=YES
# ftpusers 中用户允许访问,user_list 中用户允许访问
userlist_enable=NO
# ftpusers 中用户禁止访问,user_list 中用户允许访问
userlist_deny=YES
# ftpusers 中用户禁止访问,user_list 中用户禁止访问
userlist_deny=NO
# ftpusers 中用户禁止访问,user_list 中用户允许访问
userlist_deny=YES
userlist_enable=YES
# ftpusers 中用户禁止访问,user_list 中用户禁止访问
userlist_deny=NO
userlist_enable=YES
# ftpusers 中用户禁止访问,user_list 中用户允许访问
用户操作
# 添加用户
useradd ftpuser
# 为用户设置密码
passwd ftpuser