在Ubuntu 22.04中搭建vsftpd并配置多用户

在Ubuntu 22.04中搭建vsftpd并配置多用户FTP服务,安装、配置过程:

1、安装vsftpd

sudo apt update
sudo apt install vsftpd

这些命令会更新软件包列表并安装vsftpd服务器。

2、配置vsftpd

编辑主配置文件:

sudo vi /etc/vsftpd.conf

在文件中添加或修改以下内容:

# 禁用独立的IPv4监听套接字
listen=NO

# 启用独立的IPv6监听套接字
listen_ipv6=YES

# 禁用匿名登录
anonymous_enable=NO

# 允许本地用户登录
local_enable=YES

# 允许上传和其他写操作
write_enable=YES

# 设置上传文件的umask
local_umask=022

# 显示目录欢迎信息
dirmessage_enable=YES

# 使用本地时间而不是GMT时间
use_localtime=YES

# 启用日志记录
xferlog_enable=YES

# 在主动模式下使用端口20进行数据传输
connect_from_port_20=YES

# 将本地用户限制在其主目录中
chroot_local_user=YES

# 为chroot设置一个安全的空目录
secure_chroot_dir=/var/run/vsftpd/empty

# 设置PAM服务名称
pam_service_name=vsftpd

# 启用被动模式
pasv_enable=Yes

# 设置被动模式的端口范围
pasv_min_port=10000
pasv_max_port=10100

# 使用用户名作为替换令牌
user_sub_token=$USER

# 设置默认的本地根目录
local_root=/home/$USER/ftp

# 指定用户特定配置文件的目录
user_config_dir=/etc/vsftpd/user_conf

# 允许用户在其chroot目录中进行写操作
allow_writeable_chroot=YES

3、创建用户配置目录

sudo mkdir -p /etc/vsftpd/user_conf

这个目录将用于存储每个用户的特定配置文件。

4、重启vsftpd服务

sudo systemctl restart vsftpd

这将应用新的配置设置。


配置要求:多用户,每个用户可以有单独的ftp目录;

操作实例:

一、新增gdcool1和gdcool2两个用户并设置密码,gdcool1用户的ftp目录为/var/html,gdcool2用户的ftp目录为/data/file;

二、修改gdcool2用户的ftp目录为/home/file,修改gdcool2用户的密码;

三、删除gdcool2用户;

四、使ftp客户端隐藏/var/html只显示html中的内容,使ftp客户端隐藏/data/file只显示file中的内容。

具体操作:

一、新增gdcool1和gdcool2用户并设置密码,配置不同的FTP目录

1、创建gdcool1用户:

# 创建用户并设置家目录
sudo useradd -m gdcool1

# 设置密码
sudo passwd gdcool1

# 创建FTP目录
sudo mkdir -p /var/html

# 更改目录所有权
sudo chown gdcool1:gdcool1 /var/html

2、为gdcool1创建配置文件:

# 创建用户特定的配置文件
echo "local_root=/var/html" | sudo tee /etc/vsftpd/user_conf/gdcool1

这将gdcool1的FTP根目录设置为/var/html。

3、创建gdcool2用户:

# 创建用户并设置家目录
sudo useradd -m gdcool2

# 设置密码
sudo passwd gdcool2

# 创建FTP目录
sudo mkdir -p /data/file

# 更改目录所有权
sudo chown gdcool2:gdcool2 /data/file

4、为gdcool2创建配置文件:

# 创建用户特定的配置文件
echo "local_root=/data/file" | sudo tee /etc/vsftpd/user_conf/gdcool2

这将gdcool2的FTP根目录设置为/data/file。

二、修改gdcool2用户的FTP目录为/home/file,修改密码

1、修改FTP目录:

# 创建新的FTP目录
sudo mkdir -p /home/file

# 更改目录所有权
sudo chown gdcool2:gdcool2 /home/file

# 更新用户特定的配置文件
echo "local_root=/home/file" | sudo tee /etc/vsftpd/user_conf/gdcool2

2、修改密码:

# 修改用户密码
sudo passwd gdcool2

三、删除gdcool2用户

# 删除用户及其家目录
sudo userdel -r gdcool2

# 删除用户特定的配置文件
sudo rm /etc/vsftpd/user_conf/gdcool2

这将完全删除gdcool2用户,包括其家目录和FTP配置文件。

四、隐藏FTP客户端中的根目录,只显示内容

1、对于gdcool1用户(/var/html):

sudo vi /etc/vsftpd/user_conf/gdcool1

添加以下行:

local_root=/var/html
dirlist_enable=NO

dirlist_enable=NO将禁止显示目录列表,effectively隐藏根目录。

2、对于gdcool2用户配置方法一样。

3、重启vsftpd服务以应用更改:

sudo systemctl restart vsftpd

这将使所有配置更改生效。

额外说明:

  • 每次修改配置后,都建议重启vsftpd服务。
  • 确保防火墙允许FTP流量(通常是21端口和被动模式端口范围)。
  • 定期检查/var/log/vsftpd.log以监控FTP活动。
  • 考虑使用SSL/TLS加密来增强安全性。

备注:

在尝试将已经提前存在的目录设置(或者修改)为用户的FTP目录时,FTP客户端会连接失败,具体原因还在摸索中。暂时的解决方法是,将已经提前存在的目录复制一份,然后再删除存在的目录,FTP设置完成后再将内容复制过来即可。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注