在Debian系统上,首先通过以下命令安装vsftpd(Very Secure FTP Daemon):
sudo apt update
sudo apt install vsftpd
vsftpd的权限控制主要通过修改/etc/vsftpd.conf
文件实现,以下是核心配置项说明:
local_enable=YES
(默认开启,确保本地系统用户能访问FTP)。write_enable=YES
(默认关闭,开启后用户可上传/修改文件)。anonymous_enable=NO
(默认开启,建议关闭以提升安全性)。chroot_local_user=YES
(将用户限制在自己的主目录,防止访问系统其他路径)。allow_writeable_chroot=YES
(若开启chroot_local_user
,需设置此项,否则用户无法向其主目录写入文件)。userlist_enable=YES
(通过/etc/vsftpd.user_list
文件定义允许/禁止访问的用户列表)。userlist_deny=NO
(表示/etc/vsftpd.user_list
中的用户允许访问;若设为YES
则表示禁止访问)。userlist_file=/etc/vsftpd.user_list
(默认路径,需手动创建并添加用户名,每行一个)。useradd
命令创建专用FTP用户(避免使用系统管理员账户):sudo useradd -m ftpuser -d /home/ftpuser # -m创建家目录,-d指定家目录路径
sudo passwd ftpuser
/var/ftp/ftpuser
),需创建目录并设置权限:sudo mkdir -p /var/ftp/ftpuser
sudo chown ftpuser:ftpuser /var/ftp/ftpuser # 所有权归用户
sudo chmod 755 /var/ftp/ftpuser # 目录权限(所有者可读写执行,其他用户仅读执行)
/home/ftpuser
或自定义路径)建议设置为755
(drwxr-xr-x
),确保用户可访问自己的目录,同时防止其他用户修改。/home/ftpuser/uploads
),需赋予写入权限:sudo mkdir /home/ftpuser/uploads
sudo chown ftpuser:ftpuser /home/ftpuser/uploads
sudo chmod 775 /home/ftpuser/uploads # 所有者和组可读写执行,其他用户可读执行
为防止数据传输被窃取,建议启用SSL/TLS加密:
sudo apt install vsftpd-ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
sudo nano /etc/vsftpd.conf
添加以下内容:ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
确保防火墙允许FTP流量通过(以ufw
为例):
sudo ufw allow 21/tcp # FTP控制端口
sudo ufw allow 990/tcp # FTPS控制端口(若启用SSL)
sudo ufw allow 40000:50000/tcp # 被动模式端口范围(需与vsftpd.conf中的pasv_min_port/pasv_max_port一致)
sudo ufw reload
修改配置文件后,需重启服务使更改生效:
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd # 设置开机自启
使用FTP客户端(如FileZilla)或命令行工具连接服务器:
ftp localhost
输入用户名(如ftpuser
)和密码,验证是否能正常登录、上传/下载文件。
allow_writeable_chroot=YES
已开启,且chroot目录权限正确(如755
)。/etc/vsftpd.conf
中的local_enable=YES
、write_enable=YES
是否开启;若使用用户列表,确认userlist_deny=NO
且用户名正确。pasv_enable=YES
,且pasv_min_port
/pasv_max_port
已在防火墙中放行。通过以上步骤,可在Debian系统上完成vsftpd的用户权限管理,实现安全的FTP服务部署。