【FTP服务器】Linux(Centos)系统搭建FTP服务器(可根据账号独立配置每个账号的ftp地址)

前言

在保持现有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. 注意事项

  1. 现有用户不受影响 :只有/etc/vsftpd/user_conf目录下有对应配置文件的用户才会应用特殊配置

  2. 权限问题:确保目录权限正确,vsftpd默认不允许root目录可写

  3. SELinux影响(如果启用):

复制代码
# 检查SELinux状态
getenforce

# 如果需要,设置SELinux上下文
sudo semanage fcontext -a -t public_content_rw_t "/var/ftp/newftpuser(/.*)?"
sudo restorecon -Rv /var/ftp/newftpuser
  1. 防火墙:确保21端口开放
复制代码
sudo firewall-cmd --add-service=ftp --permanent
sudo firewall-cmd --reload
相关推荐
wdfk_prog3 分钟前
[Linux]学习笔记系列 -- [driver]base
linux·笔记·学习
月光下的麦克19 分钟前
如何查案动态库版本
linux·运维·c++
Vallelonga24 分钟前
使用 busybox 制作磁盘镜像文件
linux·经验分享
EndingCoder32 分钟前
索引类型和 keyof 操作符
linux·运维·前端·javascript·ubuntu·typescript
石小千43 分钟前
Linux清除缓存
linux·运维
weixin_5160230744 分钟前
VESTA在Linux下的安装
linux·运维·服务器
Nautiluss1 小时前
一起调试XVF3800麦克风阵列(十四)
linux·人工智能·音频·语音识别·dsp开发
热心市民R先生1 小时前
IGH EtherCAT 主站核心文件体系全解析:构成、区别与运维实践
运维·服务器·网络
耶耶耶耶耶~2 小时前
arch linux 安装
linux·运维·服务器
iYun在学C2 小时前
驱动程序开发(字符设备驱动框架实验)
linux·c语言·嵌入式硬件