VSFTP如何与CentOS集成
导读:在 CentOS 上集成 VSFTP 的实用步骤 一 安装与启动 安装 VSFTPD(Very Secure FTP Daemon): CentOS 7/8:sudo yum install -y vsftpd CentOS 9/Str...
在 CentOS 上集成 VSFTP 的实用步骤
一 安装与启动
- 安装 VSFTPD(Very Secure FTP Daemon):
- CentOS 7/8:sudo yum install -y vsftpd
- CentOS 9/Stream:sudo dnf install -y vsftpd
- 启动并设置开机自启:
- sudo systemctl enable --now vsftpd
- 确认服务监听(默认控制端口为 21/TCP):
- ss -tnlp | grep :21 或 netstat -antup | grep ftp
- 建议同时安装客户端以便测试:sudo yum/dnf install -y ftp。
二 核心配置要点
- 主配置文件:/etc/vsftpd/vsftpd.conf。常用安全与功能项:
- 身份与权限
- anonymous_enable=NO(禁用匿名)
- local_enable=YES(允许本地系统用户)
- write_enable=YES(允许上传/删除/重命名)
- local_umask=022(上传文件默认权限 644)
- 目录与隔离
- chroot_local_user=YES(将本地用户禁锢在其家目录)
- allow_writeable_chroot=YES(允许被禁锢目录可写,避免登录失败)
- 可选:local_root=/var/ftp/myapp(为本地用户统一根目录)
- 访问列表
- userlist_enable=YES
- userlist_deny=NO(白名单模式,仅 /etc/vsftpd/user_list 中的用户可登录)
- 注意:/etc/vsftpd/ftpusers 为“黑名单”,优先级更高
- 日志与横幅
- xferlog_enable=YES,xferlog_std_format=YES
- ftpd_banner=Welcome to My FTP
- 被动模式(穿越防火墙/NAT 推荐开启)
- pasv_enable=YES
- pasv_min_port=40000,pasv_max_port=45000(开放对应端口段)
- 身份与权限
- 典型最小可用配置示例(可按需增删):
- anonymous_enable=NO
- local_enable=YES
- write_enable=YES
- local_umask=022
- chroot_local_user=YES
- allow_writeable_chroot=YES
- pasv_enable=YES
- pasv_min_port=40000
- pasv_max_port=45000
- userlist_enable=YES
- userlist_deny=NO
- ftpd_banner=Welcome to My FTP
- 说明:FTP 控制通道为 21/TCP,主动模式数据通道常用 20/TCP,被动模式数据通道使用上面配置的端口段。
三 用户与目录集成
- 创建专用 FTP 用户(禁止 shell 登录,更安全):
- sudo useradd -d /var/ftp/myapp -s /sbin/nologin ftpuser
- sudo passwd ftpuser
- 准备目录与权限:
- sudo mkdir -p /var/ftp/myapp
- sudo chown -R ftpuser:ftpuser /var/ftp/myapp
- sudo chmod -R 755 /var/ftp/myapp
- 白名单放行:
- echo “ftpuser” | sudo tee -a /etc/vsftpd/user_list
- 可选:若需为不同用户设置不同根目录或限速,可使用 user_config_dir 实现按用户配置。
四 防火墙与 SELinux 集成
- 防火墙(firewalld)
- 放行 FTP 服务(推荐):sudo firewall-cmd --permanent --add-service=ftp & & sudo firewall-cmd --reload
- 或放行端口:sudo firewall-cmd --permanent --add-port=21/tcp 与 sudo firewall-cmd --permanent --add-port=40000-45000/tcp & & sudo firewall-cmd --reload
- SELinux
- 本地用户家目录访问:sudo setsebool -P ftp_home_dir on
- 需要更宽松的 FTP 访问(如目录可写、跨目录等):sudo setsebool -P allow_ftpd_full_access on
- 某些旧版本可用:sudo setsebool -P ftpd_disable_trans 1(如未定义则忽略)
- 修改后重启服务:sudo systemctl restart vsftpd
- 云服务器安全组:在控制台放行 21/TCP 与 40000-45000/TCP。
五 验证与常见问题
- 本机验证:ftp localhost(或使用 FileZilla 等客户端)
- 远程验证:ftp your_server_ip;登录后尝试上传/下载/列目录
- 日志排查:tail -f /var/log/vsftpd.log
- 常见报错与处理
- 500 OOPS: cannot change directory:家目录不可访问或未放行 SELinux,检查目录权限与 setsebool ftp_home_dir on
- 登录被拒:检查 /etc/vsftpd/ftpusers 是否包含该用户、/etc/vsftpd/user_list 白名单是否配置、PAM 是否正常
- 被动模式超时/数据连接失败:确认防火墙放行 21/TCP 与 40000-45000/TCP,以及路由器/NAT 转发配置
- 目录无法写入:确认目录属主为 FTP 用户且权限正确,且 allow_writeable_chroot=YES 已设置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: VSFTP如何与CentOS集成
本文地址: https://pptw.com/jishu/772001.html
