
前言
在保持现有FTP用户配置不变的前提下,为特定用户添加专属目录,可以使用vsftpd的user_config_dir配置。
以下是完整步骤:
1. 安装vsftpd(若显示已安装则查看了解当前vsftpd配置即可)
首先执行检测命令确认是否已存在vsftpd:
# 检查是否已经安装过vsftpd的命令
rpm -qa | grep vsftpd
情况一:若检测结果显示已安装(已安装会显示出目前安装的具体版本如下图所示):

# 检测如上图所示已安装,则执行如下命令,查看现有配置,确保了解当前设置:
sudo grep -v "^#" /etc/vsftpd/vsftpd.conf | grep -v "^$"
情况二:如无任何信息则执行如下安装命令:
sudo yum -y install vsftpd
2. 创建用户配置目录
# 创建用户配置目录
sudo mkdir -p /etc/vsftpd/user_conf
# 设置权限
sudo chown root:root /etc/vsftpd/user_conf
sudo chmod 755 /etc/vsftpd/user_conf
3. 修改vsftpd主配置文件
编辑/etc/vsftpd/vsftpd.conf:
sudo vim /etc/vsftpd/vsftpd.conf
添加或修改以下配置:
# 启用用户配置文件目录
user_config_dir=/etc/vsftpd/user_conf
# 确保以下配置存在(保持现有配置不变)
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
4. 创建新FTP用户
# 创建用户(不创建home目录)
sudo useradd -m -s /bin/bash newftpuser
# 设置密码
sudo passwd newftpuser
# 或者创建系统用户(无登录shell更安全)
sudo useradd -s /sbin/nologin -d /var/ftp/newftpuser -m newftpuser
5. 创建用户专属目录
# 创建专属上传目录
sudo mkdir -p /var/ftp/newftpuser/upload
# 设置权限
sudo chown -R newftpuser:newftpuser /var/ftp/newftpuser
sudo chmod -R 755 /var/ftp/newftpuser
6. 创建用户专属配置文件
在/etc/vsftpd/user_conf目录下创建以用户名命名的配置文件:
sudo vim /etc/vsftpd/user_conf/newftpuser
添加以下内容:
# 设置用户根目录(chroot)
local_root=/var/ftp/newftpuser
# 允许写入
write_enable=YES
# 匿名访问相关设置(禁用)
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
# 其他可选配置
# download_enable=YES
# dirlist_enable=YES
# max_clients=10
# max_per_ip=5
# local_umask=022
# 如果需要限制在主目录内(通常已设置)
# allow_writeable_chroot=YES
7. 重启vsftpd服务
# 检查配置文件语法
sudo vsftpd /etc/vsftpd/vsftpd.conf
# 重启服务(根据系统选择)
sudo systemctl restart vsftpd
# 或者
sudo service vsftpd restart
8. 验证配置
# 测试新用户登录
ftp localhost
# 查看日志
sudo tail -f /var/log/vsftpd.log
9. 高级配置示例
限制用户只能访问特定目录:
# /etc/vsftpd/user_conf/newftpuser
local_root=/var/ftp/newftpuser
chroot_local_user=YES
allow_writeable_chroot=YES
# 限制只能上传到upload目录
# 使用ftp命令的"cd"限制可能需要结合其他机制
限制上传文件大小:
# 添加到最后一行
max_upload_rate=102400 # 100KB/s
10. 注意事项
-
现有用户不受影响 :只有
/etc/vsftpd/user_conf目录下有对应配置文件的用户才会应用特殊配置 -
权限问题:确保目录权限正确,vsftpd默认不允许root目录可写
-
SELinux影响(如果启用):
# 检查SELinux状态
getenforce
# 如果需要,设置SELinux上下文
sudo semanage fcontext -a -t public_content_rw_t "/var/ftp/newftpuser(/.*)?"
sudo restorecon -Rv /var/ftp/newftpuser
- 防火墙:确保21端口开放
sudo firewall-cmd --add-service=ftp --permanent
sudo firewall-cmd --reload