「vsftpd」- 实现:特定用户帐号上传,其他用户只能下载(WIP)

  CREATED BY JENKINSBOT

问题描述

在进行产品交付时,我们使用 FTP 提供下载:1)内部帐号,上传到各子目录中,2)客户登录帐号,只能访问自己的目录,并且能进行下载且无法上传。

该笔记将记录:如何实现,某个用户上传,而其他用户只能下载。

解决方案

这里只记录关键配置:

# 前台运行(可选)
background=NO

# 禁止匿名访问,允许本地访问,允许客人(虚拟用户)访问
anonymous_enable=NO
local_enable=YES
guest_enable=YES

# 使虚拟用户具有与本地用户相同的权限
virtual_use_local_privs=YES

# 使用 chroot 以禁止用户访问系统
chroot_local_user=YES
allow_writeable_chroot=YES

# 所有人禁止写入,实现只能下载
write_enable=NO

# 为用户设置各自的家目录,
user_sub_token=$USER
local_root=/home/vsftpd/$USER

# 为用户使用自己的配置文件
user_config_dir=/etc/vsftpd/user_config.d/

通过 /etc/vsftpd/user_config.d/<username> 配置,只为需要上传的用户创建,内容如下:

write_enable=YES

参考文献

Manpage of VSFTPD.CONF
security – vsftp: why is allow_writeable_chroot=YES a bad idea? – Server Fault