在 Linux 系统中,通过 FTP(File Transfer Protocol)进行文件传输时,设置安全的密码是保障服务器安全的重要环节,FTP 协议本身在数据传输时采用明文方式,因此需结合用户权限、密码策略及加密传输(如 FTPS)来提升安全性,本文将详细介绍 Linux 系统中 FTP 密码设置的具体步骤、安全配置建议及常见问题处理。

安装并配置 FTP 服务
在设置密码前,需确保系统已安装 FTP 服务,以常用的 vsftpd(Very Secure FTP Daemon)为例,安装步骤如下:
- 更新软件包列表:
sudo apt update # Debian/Ubuntu 系统 sudo yum update # CentOS/RHEL 系统
- 安装 vsftpd:
sudo apt install vsftpd # Debian/Ubuntu sudo yum install vsftpd # CentOS/RHEL
- 启动并设置开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
创建 FTP 用户并设置密码
FTP 密码的设置本质上是系统用户的密码管理,可通过 useradd 和 passwd 命令实现。
创建系统用户(可选)
若仅需用于 FTP 传输,可创建禁用 Shell 登录的虚拟用户,提升安全性:
sudo useradd -s /sbin/nologin -d /home/ftpuser ftpuser # -s 禁用Shell,-d 指定家目录
设置/修改用户密码
执行 passwd 命令,根据提示输入两次密码即可完成设置:
sudo passwd ftpuser
密码输入时不会显示字符,输入完成后按回车键确认。
验证密码
可通过 su 命令切换用户测试密码是否生效(若用户禁用 Shell,此步骤会失败,属正常现象):
su - ftpuser
配置 vsftpd 以强化密码安全
默认的 vsftpd 配置可能存在安全风险,需通过编辑 /etc/vsftpd.conf 文件进行优化,关键配置项如下:
禁止匿名登录
避免恶意用户通过匿名账号访问服务器:

anonymous_enable=NO
限制用户访问目录
通过 chroot 限制用户仅能在其家目录及子目录中活动,防止越权访问:
chroot_local_user=YES allow_writeable_chroot=YES # 允许被限制用户在目录内写(需配合文件权限)
启用用户黑名单/白名单
若需限制特定用户登录,可通过 userlist_enable 和 userlist_file 实现:
userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO # 设置为 NO 时,仅白名单用户可登录;默认为 YES(黑名单)
编辑 /etc/vsftpd.user_list 文件,每行添加一个允许/禁止的用户名。
配置密码策略
通过 pam_unix.so 模块可强制用户设置复杂密码(如长度、字符类型),编辑 /etc/pam.d/vsftpd,添加以下内容:
password required pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=5
remember=5 表示记住最近 5 次密码,防止重复使用;sha512 指定密码加密算法。
启用 FTPS 实现加密传输
FTP 协议默认明文传输密码和文件数据,需通过 FTPS(FTP over SSL/TLS)加密连接。
安装 SSL 证书
可使用自签名证书(测试环境)或购买权威证书(生产环境),以自签名为例:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
按提示填写证书信息( Country Name、Organization 等),生成证书文件 vsftpd.pem。

配置 vsftpd 支持 FTPS
编辑 /etc/vsftpd.conf,添加以下配置:
ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1_2=YES ssl_tlsv1_3=YES rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem
重启 vsftpd 服务
sudo systemctl restart vsftpd
客户端连接时需选择“FTP over SSL/TLS”模式,并勾选“要求安全连接”。
常见问题处理
-
密码错误无法登录
- 检查用户名和密码是否正确,确认
/etc/shadow文件中密码字段非空(以 开头的用户被锁定)。 - 查看
/var/log/vsftpd.log日志,定位错误原因(如权限不足、目录不存在)。
- 检查用户名和密码是否正确,确认
-
用户被限制无法上传文件
- 确保用户家目录权限为
755(所有者可读写执行,其他用户可读执行):sudo chmod 755 /home/ftpuser sudo chown ftpuser:ftpuser /home/ftpuser
- 检查 vsftpd 配置中
write_enable=YES是否开启。
- 确保用户家目录权限为
-
FTPS 连接失败
- 确认证书路径正确且权限为
600:sudo chmod 600 /etc/vsftpd/vsftpd.pem
- 检查防火墙是否放行 FTPS 端口(默认 990):
sudo ufw allow 990/tcp # Ubuntu sudo firewall-cmd --permanent --add-port=990/tcp --zone=public # CentOS
- 确认证书路径正确且权限为
Linux FTP 密码设置需结合用户管理、服务配置及加密传输三方面,通过创建独立用户、强化密码策略、限制访问目录及启用 FTPS,可有效提升传输安全性,定期检查日志文件、更新系统补丁,并遵循最小权限原则,才能进一步降低安全风险,确保服务器稳定运行。


















