欢迎光临中国护送网
详情描述

不推荐,因为存在安全风险。但如果您确实需要,以下是基于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