不推荐,因为存在安全风险。但如果您确实需要,以下是基于vsftpd的配置步骤:
1. 安装vsftpd
yum install vsftpd -y
# 或
dnf install vsftpd -y
2. 配置vsftpd
编辑配置文件 /etc/vsftpd/vsftpd.conf:
vi /etc/vsftpd/vsftpd.conf
修改或添加以下配置项:
# 允许本地用户登录
local_enable=YES
# 允许写操作
write_enable=YES
# 设置本地用户掩码
local_umask=022
# 允许用户访问其家目录之外的其他目录(可选)
chroot_local_user=YES
# 或使用白名单方式
#chroot_local_user=NO
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
# 允许root用户登录(关键设置)
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
# 允许在用户列表中的用户登录
# 需要将root添加到user_list文件中
# 限制用户只能在家目录(可选)
allow_writeable_chroot=YES
# 使用本地时间
use_localtime=YES
# 启用被动模式(如果需要)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
3. 允许root用户登录
方法一:使用user_list文件
# 将root添加到允许列表
echo "root" >> /etc/vsftpd/user_list
# 确保root也在ftpusers文件中被注释或移除
sed -i '/^root/d' /etc/vsftpd/ftpusers
方法二:从黑名单中移除root
# 编辑ftpusers文件,注释掉root行
vi /etc/vsftpd/ftpusers
# 将 "root" 改为 "#root"
# 编辑user_list文件,添加root
vi /etc/vsftpd/user_list
# 添加一行 "root"
4. 设置root密码(如果未设置)
passwd root
5. 重启vsftpd服务
systemctl restart vsftpd
systemctl enable vsftpd
6. 防火墙配置
# 开放21端口和被动端口范围
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload
# 或如果使用iptables
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT
7. SELinux设置(如果启用)
# 允许ftp访问家目录
setsebool -P ftp_home_dir on
# 允许vsftpd使用非标准端口
setsebool -P ftpd_use_passive_mode on
8. 测试连接
# 本地测试
ftp localhost
# 或从其他机器
ftp your_server_ip
安全建议
强烈建议不要直接使用root登录FTP,替代方案:
创建专用FTP用户
useradd ftpadmin
passwd ftpadmin
使用SFTP代替FTP
# 修改SSH配置允许root登录
vi /etc/ssh/sshd_config
# 修改:PermitRootLogin yes
systemctl restart sshd
使用sudo权限
# 为普通用户授予特定目录的sudo权限
visudo
# 添加:ftpadmin ALL=(root) NOPASSWD: /usr/bin/rsync
注意事项
- FTP协议传输密码是明文的,存在安全风险
- 考虑使用FTPS(FTP over SSL)或SFTP
- 定期检查日志:
/var/log/vsftpd.log
- 监控异常登录尝试
如果遇到连接问题,检查:
# 查看vsftpd状态
systemctl status vsftpd
# 查看日志
tail -f /var/log/vsftpd.log
# 测试端口
netstat -tlnp | grep :21