当前位置: 首页 > news >正文

vsftpd 配置项说明

目录

    • 一:vsftpd 配置文件说明
    • 二:vsftpd 服务和连接设置
    • 三:vsftpd 用户根目录管理
    • 四:vsftpd 匿名用户模式管理
    • 五:vsftpd 本地用户模式管理
    • 六: vsftpd 虚拟用户模式管理

一:vsftpd 配置文件说明

vsftpd 官方配置参考手册:https://security.appspot.com/vsftpd/vsftpd_conf.html

配置文件的路径:

vsftpd 进程启动后,默认查找的配置文件是/etc/vsftpd.conf,如果配置文件是自定义的路径,则需要在启动vsftpd进程的的时指定配置文件路径,所以可以通过查看vsftpd进程的启动参数来查找配置文件路径。

例如:如果 vsftpd 是通过 systemd 管理的服务,你还可以查看 vsftpd 服务的启动参数来找出配置文件的位置。

配置文件的格式:

  • 在 配置文件中,如果以 # 号开头表示注释。
  • 配置文件中的指令和值之间的 = 号两边不能存在任何空格。

指定子配置文件:

  • 通过 user_config_dir 选项可以指定vsftpd的子配置文件路径,一般配置虚拟用户模式的时候会用到。

二:vsftpd 服务和连接设置

服务端模式设置:

  • listen=yes/no:控制 vsftpd 是否作为独立服务运行,需要启用这个配置项。

服务端时间设置:

  • use_localtime=yes/no:FTP服务端的时间格式是否和服务器一致,如果不启用,默认使用的是格林威治时间。

服务端口设置:

  • listen_port=num:指定 vsftpd 监听的端口号。默认是 21,。
  • pasv_min_portpasv_max_port:设置被动模式下允许的数据通道端口范围。默认范围是 1024-65535
  • ftp_data_port=num:主动模式下ftp服务端的数据通道端口。默认是 20,需要禁用 connect_from_port_20 才会生效。

工作模式设置:

  • pasv_enable=yes/no:是否将FTP服务端切换为被动模式,默认就是被动模式下运行。
  • active_enable=yes/no:是否将FTP服务端切换为主动模式,默认就是被动模式下运行。

服务端日志设置:

  • xferlog_file=/path:指定日志文件路径,不指定默认是/var/log/vsftpd.log
  • xferlog_enable=yes/no:启用后会记录上传和下载的日志信息,如果要看详细日志信息,就需要开启。
  • xferlog_std_format=yes/no:禁用后会显示日志的更多详细信息,一般禁用,方便排查问题。
  • log_ftp_protocol=yes/no:启用后会记录每个FTP会话的详细对话。一般启用,可以查看更多日志信息。

三:vsftpd 用户根目录管理

用户目录配置:

  • local_root=/path:指定非匿名用户的根目录。
  • anon_root=/path:指定匿名用户的根目录

禁锢用户访问(Chroot):

  • chroot_local_user=YES/NO:启用或禁用非匿名用户被禁锢在其登录目录。
  • allow_writeable_chroot=YES/NO:允许在禁锢模式下对根目录进行写操作(适用于非匿名用户)。

四:vsftpd 匿名用户模式管理

匿名用户指的就是FTP客户端通过ftpanonymous这两个用户名登录FTP服务器。所以要使用匿名用户模式,需要确保服务器上存在 ftpnobody 这两个系统用户。

匿名用户模式配置:

  • anonymous_enable=yes/no:是否启用匿名模式,如果启用,则允许匿名用户通过 ftpanonymous 登录。
  • no_anon_password=yes/no:是否允许匿名用户无需密码即可登录。启用后匿名用户不输入密码直接登录。

匿名用户权限控制:

  • anon_upload_enable=yes/no:是否允许匿名用户执行上传文件的FTP命令,如果允许则允许匿名用户上传文件到FTP服务端。

  • anon_other_write_enable=yes/no:是否允许匿名用户执行除了上传和创建目录之外的FTP命令,这类FTP命令会改变服务端的文件系统。

  • anon_mkdir_write_enable=yes/no:允许或禁止匿名用户创建目录。若允许则匿名用户将能够创建目录。

  • anon_world_readable_only=yes/no:是否只允许匿名用户下载具有全局读取权限的文件。若启用,则只有ftp或nobody具有读权限的文件才能下载。

说明:匿名用户如果要修改服务端的文件系统,需要启用write_enable配置,让用户有权限执行这些会改变文件系统权限的FTP命令。并且还需要保证ftp或nobody用户具有在操作系统层面上具备相应的文件权限。例如,必须对文件拥有写权限,才能执行删除、修改等操作。

五:vsftpd 本地用户模式管理

本地用户模式指的是FTP客户端使用操作系统中已存在的用户账户进行登录。此模式下,FTP用户与操作系统用户是绑定的。

本地用户模式配置:

  • local_enable=yes/no:是否允许使用操作系统本地用户登录 FTP 服务端。若允许则允许操作系统中已存在的用户使用自己的账户进行登录。

本地用户权限控制:

  • write_enable=yes/no:是否允许FTP客户端用户执行可以改变文件系统(例如上传、修改、删除)的FTP命令。

说明

  1. 本地用户模式下,只需要允许本地用户执行可以改变文件启动的FTP命令(启用write_enable),然后确保该用户具有对应的文件系统权限去更改这个文件就行了。
  2. 本地用户必须有一个有效的登录 shell(如 /bin/bash),否则会拒绝该用户的 FTP 登录请求。

六: vsftpd 虚拟用户模式管理

虚拟用户指的是只在FTP服务中有效,在操作系统中不存在的用户。因为虚拟用户不具有操作系统层面的文件权限,因此需要将虚拟用户与系统用户进行绑定。

虚拟用户配置:

  • guest_enable=yes/no:是否启用匿名模式,如果启用了匿名模式,,所有连接到FTP服务端的用户都会被视为虚拟用户进行验证。
  • guest_username=username:指定将虚拟用户映射为某个实际存在的操作系统用户。如果不指定默认就是ftp这个系统用户。
  • virtual_use_local_privs=yes/no:是否让虚拟用户拥有guest_username指定的系统用户的文件系统权限,如果不指定的话,默认是匿名用户的权限。、

说明:启用虚拟用户模式,还需要启用local_enable选项才能正常使用。因为当虚拟用户被映射到一个本地用户时,会使用本地用户来处理权限和文件访问。vsftpd 会通过 local_enable 的设置来决定是否允许该本地用户的操作

虚拟用户权限控制:

  • 指定了 guest_username 和 virtual_use_local_privs:虚拟用户会映射到指定的 本地系统用户,并使用该本地用户的权限。这时,权限控制将遵循 本地用户模式 的相关配置(如 local_enable、write_enable 等),即通过本地用户的权限控制来管理虚拟用户的操作权限。
  • 没有指定 guest_username 和 virtual_use_local_privs:虚拟用户默认映射到一个ftp这个匿名用户,并使用匿名用户模式的相关配置。这时,权限控制则需要通过 匿名用户模式 的配置项(如 anon_upload_enable、anon_world_readable_only 等)来管理虚拟用户的权限。

说明:

  • 启用虚拟用户模式后,FTP登录FTP服务端使用的所有用户都会被认为是虚拟用户。

虚拟用户模式配置流程:

1、需要先检查当前的vsftpd是否加载了PAM相关库文件,如果没加载则pam验证不会生效。

ldd vsftpd | grep pam

2、创建一个系统本地用户,这个用户不要求拥有有效的登录 shell(如 /bin/bash)

useradd -r -m -d /ftp_data  -s /sbin/nologin vsftpd

3、创建一个文本文件。文本文件里面存放用户名和密码

# 奇数行是用户名,偶数行是密码
sudo mkdir  /etc/vsftpd/

sudo vim /etc/vsftpd/vusers
tom
Abc123
bob
123456
alice
redhat

4、生成Berkeley DB 数据库文件

sudo db_load -T -t hash -f ~/vusers   /etc/vsftpd/vusers.db

5、编写PAM验证规则

sudo vim /etc/pam.d/vsftpd
auth    required        pam_userdb.so   db=/etc/vsftpd/vusers
account required        pam_userdb.so   db=/etc/vsftpd/vusers
  • auth required pam_userdb.so db=/etc/vsftpd/vusers: 这个配置主要负责验证用户提供的密码是否正确。会根据用户输入的用户名去指定的数据库(如/etc/vsftpd/vusers)中查找对应的记录,并核对密码是否匹配
  • account required pam_userdb.so db=/etc/vsftpd/vusers: 作用主要就是验证提供的账号是否存在于数据库中。会根据用户输入的用户名去指定的数据库(如/etc/vsftpd/vusers)中查找对应的记录

6、需改vsftpd的配置文件

# 虚拟用户配置
	# 启用虚拟用户模式
guest_enable=YES
local_enable=YES
	# 指定映射的用户
guest_username=vsftpd
	# 让虚拟用户拥有和系统用户同样的权限
virtual_use_local_privs=YES
	# 指定用于验证的PAM规则文件,不用加全路径,会默认到/etc/pam.d下找
pam_service_name=vsftpd

# 权限配置
	# 允许用户指定更改文件系统的FTP命令
write_enable=YES
	# 指定用户创建文件的默认权限
local_umask=022
	# 指定用户的默认根目录
local_root=/ftp_data
	# 将用户禁锢到根目录下,从而使它不能进入更上层目录
chroot_local_user=YES
	# 禁锢模式下,如果该用户对根目录有写权限,需要开启该选项
allow_writeable_chroot=YES

虚拟用户配置时子配置文件方式:

步骤和上面的一致,就是修改vsftpd.conf配置文件的时候加上user_config_dir来指定子配置文件的位置。

虚拟用户的子配置文件需要以该用户的用户名命名,且不能带后后缀,然后在子配置文件里面加入相关的权限配置选项就行了。

例如:tom用户的配置

主配置文件:

$ sudo vim /etc/vsftpd.conf
# 虚拟用户配置
	# 启用虚拟用户模式
guest_enable=YES
local_enable=YES


# 指定子配置文件路径
user_config_dir=/etc/vsftpd

子配置文件:

$ sudo vim /etc/vsftpd/tom
guest_username=vsftpd
virtual_use_local_privs=YES
pam_service_name=vsftpd

write_enable=YES
local_umask=022

local_root=/ftp_data
chroot_local_user=YES
allow_writeable_chroot=YES

相关文章:

  • AI 如何改变职场:从增强到重塑工作的未来
  • C++基础 | 线程`std::thread`
  • VoIP之音视频会议中的混音技术
  • LeetCode 1552.两球之间的磁力:二分查找
  • Humanoid Robot Price Break 人形机器人价格突破
  • NO.14十六届蓝桥杯备战|switch语句|break|default|2道练习(C++)
  • 基于LSTM+前向均值滤波后处理的癫痫发作检测(包含数据集)
  • C++ 设计模式-装饰器模式
  • 第四篇:放大电路的“子弹时间”——车载音频与传感器信号链设计
  • oppo,康冠科技25届春招内推
  • 5种解决方式来应对deepseek暂时无法回答
  • 使用 YOLOv8 模型分析摄像头的图像
  • Python+wxauto:实现电脑端微信程序自动化
  • 深入理解 ABA 问题与退让策略:Go 语言实现与优化
  • 【黑马点评】 使用RabbitMQ实现消息队列——3.批量获取1k个用户token,使用jmeter压力测试
  • Conda 包管理:高效安装、更新和删除软件包
  • Ae:常见的光照控件和材质控件
  • Git 查看修改记录 二
  • BGA 封装工艺简介
  • 怎么保证设计的API是安全的
  • 自助众筹网站建设/免费搭建个人网站
  • 集团网站建设成都/广告推广平台哪个好
  • 中国人民解放军国防大学/seo是什么意思?
  • 西安做网站优化的公司/企业seo排名外包
  • 做网站官网需多少钱/天津seo外包
  • 网站seo入门/游戏推广怎么快速拉人