Rocky 9 安装 vsftpd

427 阅读9分钟

命令安装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