在 Linux 上搭建 FTPS(FTP over SSL/TLS)服务器 时,权限设置主要涉及 系统用户权限、目录权限、FTP 服务配置、以及 SSL/TLS 安全策略。下面以最常见的 vsftpd(Very Secure FTP Daemon) 为例说明。
# Ubuntu / Debian
apt update
apt install vsftpd openssl
# CentOS / Rocky / Alma
yum install vsftpd openssl
openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/vsftpd/vsftpd.key \
-out /etc/vsftpd/vsftpd.crt
编辑配置文件:
vi /etc/vsftpd.conf
核心配置示例(FTPS):
# 启用 FTP
listen=YES
# 禁用匿名
anonymous_enable=NO
# 本地用户登录
local_enable=YES
write_enable=YES
# 强制 FTPS
ssl_enable=YES
allow_anon_ssl=NO
force_local_logins_ssl=YES
force_local_data_ssl=YES
# 证书
rsa_cert_file=/etc/vsftpd/vsftpd.crt
rsa_private_key_file=/etc/vsftpd/vsftpd.key
# 被动模式(防火墙友好)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
重启服务:
systemctl restart vsftpd
useradd -m ftpuser
passwd ftpuser
mkdir -p /data/ftp
chown ftpuser:ftpuser /data/ftp
chmod 750 /data/ftp
# vsftpd.conf
chroot_local_user=YES
allow_writeable_chroot=YES
local_root=/data/ftp
⚠️ 如果不加 allow_writeable_chroot=YES,用户目录可写会登录失败。
chmod 555 /data/ftp
或 vsftpd 中:
write_enable=NO
mkdir /data/ftp/user1
chown user1:user1 /data/ftp/user1
vsftpd:
user_config_dir=/etc/vsftpd/user_conf
echo "local_root=/data/ftp/user1" > /etc/vsftpd/user_conf/user1
groupadd ftpgroup
usermod -aG ftpgroup ftpuser
chown :ftpgroup /data/ftp
chmod 770 /data/ftp
firewall-cmd --add-service=ftp --permanent
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
setsebool -P ftpd_full_access on
| 问题 | 原因 |
|---|---|
| 530 Login incorrect | PAM / 密码 / Shell 限制 |
| 500 OOPS: chroot | 目录权限不正确 |
| 无法列出目录 | 被动端口未开放 |
| 明文被拒绝 | 未启用 SSL |
如果你用的是 ProFTPD / Pure-FTPd,或者需要 虚拟用户 / LDAP / 云服务器场景,可以告诉我,我可以给你对应方案。