【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
相关推荐
OliverH-yishuihan2 小时前
用windows10的linux子系统在visual studio2019中用C语言开发linux项目
linux·运维·visual studio
xujiangyan_2 小时前
k8s中的pod管理及其优化
linux·容器·kubernetes
知识分享小能手2 小时前
Ubuntu入门学习教程,从入门到精通, Ubuntu 22.04 用户和组管理指南(8)
linux·学习·ubuntu
翻斗花园岭第一爆破手2 小时前
flutter2:Container的简介与尺寸
java·服务器·前端
TG:@yunlaoda360 云老大2 小时前
华为云国际站代理商GES的应用场景有哪些?
服务器·数据库·华为云
脏脏a2 小时前
【Linux】进程地址空间
linux·运维·服务器·进程地址空间
旖旎夜光2 小时前
Linux(5)(下)
linux·学习
无泪无花月隐星沉2 小时前
uos server 1070e部署Hadoop
大数据·运维·服务器·hadoop·分布式·uos·国产化os
努力的小帅2 小时前
Linux_进程间通信(Linux入门到精通)
linux·c++·centos·共享内存·进程通信·命名管道·管道的学习