命令安装vsftpd
dnf install vsftpd
启动与停止命令如下
systemctl start vsftpd.service # 启动
systemctl stop vsftpd.service # 停止
systemctl restart vsftpd.service # 重启
配置
vsftpd 的默认基础配置文件位于 /etc/vsftpd/vsftpd.conf,这个文件是 vsftpd 的核心配置文件,操作修改之前最好先备份,配置文件内容的基础说明:
Table 1: 匿名用户配置
| 参数 | 说明 |
|---|---|
| anonymous_enable=YES | 是否允许匿名登录 yes=允许 no= 不允许 |
| ftp_username=ftp | 设置ftp匿名登录时的用户名,默认 ftp |
| no_anon_password=YES | 匿名用户登录不需要输入密码 默认 YES |
| deny_email_enable=YES | 以banned_email_file里面的电子邮件为密码的匿名用户不能登录 |
| anon_root | 匿名用户登录后的默认目录,不设置,默认为/var/ftp |
| anon_upload_enable=YES | 允许匿名登录用户上传文件 默认NO |
| anon_mkdir_write_enable=YES | 允许匿名登录用户创建目录 默认NO |
| anon_other_write_enable=NO | 允许匿名用户有较高的写权限包括 删除目录和重命名等 默认NO |
| anon_world_readable_only=YES | 允许匿名用户下载可读文件 默认YES , 设置为yes时只能下载不能直接在Ftp中阅读。 |
| chown_uploads=YES | 设置是否改变匿名用户上传文件(非目录)的属主。默认值为NO。 |
# 是否允许匿名登录 FTP 服务器,默认设置为 NO 表示允许
# 用户可使用用户名 ftp 或 anonymous 进行 ftp 登录,口令为用户的 E-mail 地址。
# 如在内网使用不需要登录可设置为 YES
anonymous_enable=NO
# 是否允许本地用户(即 linux 系统中的用户帐号)登录 FTP 服务器,默认设置为 YES 允许
# 本地用户登录后会进入用户主目录,而匿名用户登录后进入匿名用户的下载目录 /var/ftp/pub
# 若只允许匿名用户访问,前面加上#注释掉即可阻止本地用户访问 FTP 服务器
local_enable=YES
# 是否允许本地用户对 FTP 服务器文件具有写权限,默认设置为 YES 允许
write_enable=YES
# 掩码,本地用户默认掩码为 077
# 你可以设置本地用户的文件掩码为缺省 022,也可根据个人喜好将其设置为其他值
local_umask=022
# 是否允许匿名用户上传文件,须将全局的 write_enable=YES 默认为 NO
#anon_upload_enable=YES
# 是否允许匿名用户创建新文件夹
#anon_mkdir_write_enable=YES
# 是否激活目录欢迎信息功能
# 当用户用 CMD 模式首次访问服务器上某个目录时,FTP 服务器将显示欢迎信息
# 默认情况下,欢迎信息是通过该目录下的 .message 文件获得的
# 此文件保存自定义的欢迎信息,由用户自己建立
dirmessage_enable=YES
# 是否让系统自动维护上传和下载的日志文件
# 默认情况该日志文件为 /var/log/vsftpd.log 也可以通过下面的 xferlog_fil e选项对其进行设定
xferlog_enable=YES
# 是否设定 FTP 服务器将启用 FTP 数据端口的连接请求
# ftp-data 数据传输,21 为连接控制端口
connect_from_port_20=YES
# 设定是否允许改变上传文件的属主,与下面一个设定项配合使用
# 注意,不推荐使用 root 用户上传文件
#chown_uploads=YES
# 设置想要改变的上传文件的属主,如果需要,则输入一个系统用户名
# 可以把上传的文件都改成 root 属主。whoever:任何人
#chown_username=whoever
# 设定系统维护记录 FTP 服务器上传和下载情况的日志文件
# /var/log/vsftpd.log 是默认的,也可以修改为其它
#xferlog_file=/var/log/vsftpd.log
# 是否以标准 xferlog 的格式书写传输日志文件
# 默认为 /var/log/xferlog,也可以通过 xferlog_file 选项对其进行设定
# 默认值为 YES
xferlog_std_format=YES
# 设置数据传输中断间隔时间,此语句表示空闲的用户会话中断时间为 600 秒
# 即当数据传输结束后,用户连接 FTP 服务器的时间不应超过 600 秒。可以根据实际情况对该值进行修改
#idle_session_timeout=600
# 设置数据连接超时时间,该语句表示数据连接超时时间为 120 秒,可根据实际情况对其个修改
#data_connection_timeout=120
# 运行 vsftpd 需要的非特权系统用户,缺省是 nobody
#nopriv_user=ftpsecure
# 是否识别异步 ABOR 请求。
# 如果 FTP client 会下达 “async ABOR” 这个指令时,这个设定才需要启用
# 而一般此设定并不安全,所以通常将其注释
#async_abor_enable=YES
# 是否以 ASCII 方式传输数据。默认情况下,服务器会忽略 ASCII 方式的请求。
# 启用此选项将允许服务器以 ASCII 方式传输数据
# 不过,这样可能会导致由 "SIZE /big/file" 方式引起的 DoS 攻击
#ascii_upload_enable=YES
#ascii_download_enable=YES
# 登录 FTP 服务器时显示的欢迎信息
# 如有需要,可在更改目录欢迎信息的目录下创建名为 .message 的文件,并写入欢迎信息保存后
#ftpd_banner=Welcome to blah FTP service.
# 黑名单设置。可以阻止某些特殊的 email address 链接
#deny_email_enable=YES
# 当上面的 deny_email_enable=YES 时,可以利用这个设定项来规定哪些邮件地址不可登录 vsftpd 服务器
# 此文件需用户自己创建,通常情况下为一行一个 email address
#banned_email_file=/etc/vsftpd/banned_emails
# 用户登录 FTP 服务器后是否具有访问自己目录以外的其他文件的权限
# 设置为 YES 时,用户被锁定在自己的 home 目录中,vsftpd 将在下面 chroot_list_file 选项值的位置寻找 chroot_list 文件
# 必须与下面的设置项配合
#chroot_list_enable=YES
# 被列入此文件的用户,在登录后将不能切换到自己目录以外的其他目录
# 从而有利于 FTP 服务器的安全管理和隐私保护。此文件需自己建立
#chroot_list_file=/etc/vsftpd/chroot_list
# 是否允许递归查询。默认为关闭,以防止远程用户造成过量的 I/O
#ls_recurse_enable=YES
# 是否允许监听。
# 如果设置为 YES,则 vsftpd 将以独立模式运行,由 vsftpd 自己监听和处理 IPv4 端口的连接请求
listen=NO
# 设定是否支持 IPV6
listen_ipv6=YES
# 设置 PAM 外挂模块提供的认证服务所使用的配置文件名,即 /etc/pam.d/vsftpd 文件
# 此文件 中file=/etc/vsftpd/ftpusers 字段,说明了 PAM 模块能抵挡的帐号内容来自文件 /etc/vsftpd/ftpusers 中
pam_service_name=vsftpd
# 是否允许 ftpusers 文件中的用户登录 FTP 服务器,默认为 YES
# 若此项设为 YES,则 user_list 文件中的用户允许登录 FTP 服务器
# 而如果同时设置了userlist_deny=YES,则 user_list 文件中的用户将不允许登录 FTP 服务器,甚至连输入密码提示信息都没有
userlist_enable=YES
/etc/vsftpd/ftpusers 这个文件是禁止使用 vsftpd 的用户列表文件
/etc/vsftpd/user_list 文件是允许或禁止使用 vsftpd 的用户列表文件
虚拟用户配置
制作虚拟用户数据库文件
创建储存虚拟用户用户名与密码的文件,该文件格式为:一行用户名对应一行密码
vim /etc/vsftpd/virtusers
# 文件示例
lisi
123
生成虚拟用户数据文件
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
设置 PAM 验证文件
编辑账号的pam验证文件 vi /etc/pam.d/vsftpd ,在最上方增加
auth sufficient lib/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient pam_userdb.so db=/etc/vsftpd/virtusers
可能需要额外安装db_load
db=/etc/vsftpd/virtusers 这个就是上一步生成的虚拟数据库(文件名称根据自己的来),注意:这里不用加 .db 后缀
修改虚拟用户配置文件
修改虚拟用户配置文件,将虚拟用户配置文件存入 /etc/vsftpd/virtualconf/ 目录,文件名为虚拟用户名,例如虚拟用户为 user1,则对应的文件名为/etc/vsftpd/virtualconf/user1,对应配置项与主配置项基本相同,该配置文件未指定的内容则由主配置文件决定,对应配置项如下:
# 指定虚拟用户的具体主路径
local_root=/ftptmp
# 设定允许写操作
write_enable=YES
# 设定不允许匿名用户上传
anon_upload_enable=NO
# 设定不允许匿名用户建立目录
anon_mkdir_write_enable=NO
# 设定空闲连接超时时间
idle_session_timeout=600
# 设定单次连续传输最大时间
data_connection_timeout=120
# 设定并发客户端访问个数
max_clients=10
# 设定单个客户端的最大线程数,这个配置主要来照顾 Flashget、迅雷等多线程下载软件
max_per_ip=5
# 设定该用户的最大传输速率,单位 b/s
local_max_rate=5000000
修改配置文件 /etc/vsftpd/vsftpd.conf
#监听为专用模式
listen=NO 改为 listen=YES
#将ipv6监听注释掉
listen_ipv6=YES 改为 #listen_ipv6=YES
#对用户访问只限制在主目录 不能访问其他目录(这个已经有了 但是默认是注释的 可以取消注释或者直接新增)
chroot_local_user=YES
# 设定启用虚拟用户功能
guest_enable=YES
# 指定虚拟用户的宿主用户,即 linux 中真实存在的用户
guest_username=root
# 设定虚拟用户的权限符合他们的宿主用户
virtual_use_local_privs=YES
# 设定 PAM 服务下 vsftpd 的验证配置文件名。因此,PAM 验证将参考 /etc/pam.d/ 下的 vsftpd 文件配置
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/virtualconf
其他配置
关闭防火墙 关闭SELinux
# 临时关闭
setenforce 0
# 永久关闭
vi /etc/selinux/config
SELINUX=disabled
开启被动模式
pasv_enable=YES
pasv_min_port=49152
pasv_max_port=65534
pasv_promiscuous=YES
port_promiscuous=YES
其他
FTP的命令
| 说明 | 命令 |
|---|---|
| 设定本地接受目录位置 | lcd |
| 列出服务器的文件列表 | ls |
| 关闭连接 | bye / exit / quit |
| 下载文件 | get |
| 下载文件-断点续传 | reget |
| 上传文档 | put / send |
| 上传文档-断点续传 | size -》 restart -》 put |
| 切换二进制 | binary |