安装vsftpd

  1. # centos
  2. yum install -y vsftpd
  3. # ubuntu
  4. apt install -y vsftpd
  5. # 安装完成后,vsftpd服务将自动启动。您可以使用以下命令检查其状态:
  6. systemctl status vsftpd
  7. # vsftpd服务在启动时自动启动,可以使用以下命令使其启用:
  8. systemctl is-enabled vsftpd
  9. systemctl enable vsftpd

修改配置:

  1. vi /etc/vsftpd/vsftpd.conf
  2. # ubuntu默认是:
  3. vi /etc/vsftpd.conf

vsftpd.conf内容参考:

1.3 主动模式设置

主动模式适用于局域网(内网)环境下,云平台使用公网 FTP 服务,请使用被动模式。

主动模式下 vsftpd.conf 参数设置
vi /etc/vsftpd/vsftpd.conf

  1. # 修改参数如下,没有修改的为默认值
  2. # 全部用户被限制在主目录
  3. chroot_local_user=YES
  4. # 启用例外用户名单
  5. chroot_list_enable=YES
  6. # 指定例外用户列表文件,列表中的用户不被锁定在主目录
  7. chroot_list_file=/etc/vsftpd/chroot_list
  8. allow_writeable_chroot=YES
  9. # 设置本地用户登录后所在的目录
  10. local_root=/var/ftp/test
  11. # 启用匿名访问:
  12. anonymous_enable=NO
  13. # 允许本地用户登录:
  14. local_enable=YES
  15. # 允许用户上传文件:
  16. write_enable=YES

重启服务生效:

systemctl restart vsftpd

添加用户:

  1. adduser --shell /bin/false --home /data/weblogjson ftpuser
  2. 然后要求输入密码,接着重启
  3. systemctl restart vsftpd
  4. chown ftpuser:ftpuser /data/weblogjson
  5. chmod 755 /data/weblogjson

锁定用户:

  1. usermod -L ftpuser
  2. usermod -L ftpuser 命令锁定了用户,这会禁用用户的密码。这意味着如果您的 FTP 服务器设置为需要密码验证,该用户将无法通过密码验证登录。确保这是您想要的配置。如果您想解锁用户,可以使用:

设置用户密码:

passwd ftpuser

启用服务:

systemctl start vsftpd

查看状态(端口):

netstat -antup | grep ftp ps aux | grep vsftpd

查看日志

  1. tail -fn50 /var/log/vsftpd.log
  2. # 或者查看系统日志
  3. sudo journalctl -u vsftpd

vsftpd 配置文件说明

  1. #ftp 访问路径
  2. local_root=
  3. #是否开启匿名模式
  4. anonymous_enable=YES
  5. #是否允许本地用户登录
  6. local_enable=YES
  7. #是否允许任何形式写入 ftp
  8. write_enable=YES
  9. #本地 umask 值
  10. local_umask=022
  11. #允许匿名用户上传文件到 ftp
  12. anon_upload_enable=YES
  13. #允许匿名用户在 ftp 上创建目录
  14. anon_mkdir_write_enable=YES
  15. #虚拟用户是否和本地用户权限一致
  16. virtual_use_local_privs=YES
  17. #是否记录目录活动信息
  18. dirmessage_enable=YES
  19. #是否记录上传和下载的信息
  20. xferlog_enable=YES
  21. #开启主动模式
  22. connect_from_port_20=YES
  23. #开启被动模式
  24. pasv_enable=YES
  25. #配置被动模式端口范围
  26. #默认为 0,表示 1024 以上的所有端口
  27. pasv_min_port=30000
  28. pasv_max_port=31000
  29. #指定登录传输的端口
  30. listen_port=10022
  31. #指定上传文件属于哪个用户
  32. chown_uploads=YES
  33. chown_username=whoever
  34. #定义日志目录,默认为 /var/log/xferlog
  35. xferlog_file=/var/log/xferlog
  36. #定义日志格式是否为 xferlog
  37. xferlog_std_format=YES
  38. #定义空闲会话超时时间
  39. idle_session_timeout=600
  40. #定义数据链接超时时间
  41. data_connection_timeout=120
  42. #定义非特权用户
  43. nopriv_user=ftpsecure
  44. #服务器是否识别 ABOR 异步请求
  45. async_abor_enable=YES
  46. #是否允许 ASCII 模式,默认为 NO
  47. ascii_upload_enable=YES
  48. ascii_download_enable=YES
  49. #定义 ftp 登录时的横幅
  50. ftpd_banner=Welcome to blah FTP service.
  51. #是否拒绝匿名电子邮件,
  52. deny_email_enable=YES
  53. #指定用户登陆时 chroot 到某个指定的目录
  54. #chroot 可能非常危险。如果使用 chroot,请确保用户对 chroot 内的顶级目录没有写入权限
  55. chroot_local_user=YES
  56. chroot_list_enable=YES
  57. chroot_list_file=/etc/vsftpd/chroot_list
  58. #是否启用 ls -R 参数,避免多用户造成 I/O 问题
  59. ls_recurse_enable=NO
  60. #当启用“listen”指令时,vsftpd 以独立模式运行并侦听 IPv4 套接字
  61. #该指令不能与 listen_ipv6 指令结合使用
  62. listen=NO
  63. #启用侦听 IPv6 套接字
  64. listen_ipv6=YES
  65. #开启虚拟用户模式
  66. guest_enable=YES
  67. #设定 PAM 服务下 vsftpd 的验证配置文件名
  68. #PAM 验证将参考 /etc/pam.d/ 下的 vsftpd 文件配置
  69. # ubuntu下修改成:pam_service_name=ftp
  70. # centos下
  71. pam_service_name=vsftpd
  72. #是否启用 user_list 文件
  73. #userlist_deny=NO 时表示 user_list 文件内的用户拒绝登录 vsftp
  74. #userlist_deny=YES 时表示 user_list 文件内的用户允许登录 vsftp
  75. userlist_enable=YES
  76. #虚拟用户配置文件路径
  77. user_config_dir=
  78. #支持 TCP Wrappers
  79. tcp_wrappers=YES