【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
相关推荐
嵌入小生0072 分钟前
Shell | 命令、编程及Linux操作系统的基本概念
linux·运维·服务器
-Try hard-1 小时前
Linuv软件编程 | Shell命令
linux·运维·服务器
释怀不想释怀1 小时前
Linux快捷键,软件安装启动
linux·运维·服务器
Hello World . .1 小时前
Linux:软件编程
linux·运维·服务器·vim
人间打气筒(Ada)2 小时前
k8s:CNI网络插件flannel与calico
linux·云原生·容器·kubernetes·云计算·k8s
老师用之于民2 小时前
【DAY21】Linux软件编程基础&Shell 命令、脚本及系统管理实操
linux·运维·chrome·经验分享·笔记·ubuntu
路由侠内网穿透.2 小时前
本地部署代码托管解决方案 Gitea 并实现外部访问( Windows 版本)
运维·服务器·网络协议·gitea
serve the people2 小时前
python环境搭建 (十三) tenacity重试库
服务器·python·php
jake don3 小时前
GPU服务器搭建大模型指南
服务器·人工智能
江畔何人初3 小时前
pod的内部结构
linux·运维·云原生·容器·kubernetes