学习Linux时间不长,首次安装了vsftp,按照网上的各种帖子尝试配置,不过都没打到预期,不是被拒绝连接,就是连接超时,总之就是各种问题啊。当然了,不是别人配置的不对,而是自己不是太懂Linux,选择的配置参数彼此之间不知道哪里起了冲突。

  所以结合自己的系统把安装配置过程记录下来,方便以后学习总结。

 

  1、 安装vsftpd

  # yum install vsftpd  

  【删除指令 yum remove vsftp*】

  2.、查看是否已经安装上了

  # yum list installed | grep vsftpd

  vsftpd.x86_64                           3.0.2-25.el7                   @base

  3、启动vsftp,并且关闭防火墙以方便测试

  # systemctl start vsftpd

  # systemctl stop firewalld

  4、给防火墙增加ftp的21端口

  # firewall-cmd --zone=public --add-port=21/tcp --permanent

  在centos7中,防火墙为firewall,在开启状态下执行上面语句,返回success;重启后规则生效。

  --zone #作用域

  --add-port=21/tcp #添加端口,格式为:端口/通讯协议

  --permanent #永久生效

  

  查看当前开了哪些端口,其实一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件。

  # firewall-cmd --list-services

  查看已经打开了哪些服务

  # firewall-cmd --get-services

  添加一个服务到firewalld

  # firewall-cmd --add-service=ftp  // 这样添加的service当前立刻生效,但系统下次启动就失效

  # firewall-cmd --permanent --add-service=ftp  // 要永久开放一个service,加上 --permanent

  然后通过systemctl restart firewalld.service重启防火墙就生效了

  5、文件说明

  刚安装完vsftp后,/etc/vsftpd/下的文件ftpusers,user_list,vsftpd.conf,vsftpd_conf_migrate.sh。

  默认情况下,vsftp是允许匿名连接的,即不输入用户名和密码直接通过ip就可以连接上。

  默认的连接目录是/var/ftp/pub,并且只有550的权限。

  6、文件修改

  只做简单修改,只为能按预期连接ftp。只允指定用户进行登录并且只能访问自己的home目录

  anonymous_enable=NO  (禁止匿名登录)

  chroot_local_user=NO  (用于指定用户列表文件中的用户是否允许切换到上级目录)

  chroot_list_enable=YES  (设置是否启用chroot_list_file配置项指定的用户列表文件)

  chroot_list_file=/etc/vsftpd/chroot_list  (用于指定用户列表文件,需要自己手动创建)

  hide_file = .*  (不显示以点开头的隐藏文件)

  

  然后使用系统的本地用户进行登录,连接不成功,提示如下错误:

  500 OOPS: chroot

  please specify the password

  解决方法:关闭SElinux;修改配置文件/etc/vsftpd/vsftpd.conf添加参数:allow_writeable_chroot=YES

  实现预期效果。

  7、临时关闭Selinux方法

  # getenforce  //查看Selinux状态

  Enforcing

  # setenforce 0 //临时关闭Selinux,立即生效

  # getenforce

  Permissive

  8、新建FTP用户

  useradd ftpuser -d /mnt/ftpfile -s /sbin/nologin

  passwd ftpuser

  chown -R ftpuser:ftpuser /mnt/ftpfile

  将ftpuser添加到chroot_list中,连接ftp,提示530 Login incorrect,连接失败。但是创建的普通账号就可以正常登陆。

  解决方法:很多提供对系统非登录访问的守护进程(如FTP)会检查用户的登录shell是否列在/etc/shells中,如果没有列出,守护进程就会拒绝访问(这正是您所需要的动作)。

  打开 /etc/shells后,发现确实没有/sbin/nologin这一行,添加上再次登陆,成功。

  9、备注

  在实际生成过程中,按上述配置完毕后,不报错误,但是一直超时连接不上。修改了本地FTP的连接模式为PORT或者其他与服务器配置对应的方式就成功了。

最新文章

  1. BZOJ3145 : [Feyat cup 1.5]Str
  2. .naturalWidth 和naturalHeight属性,
  3. 持续集成-sourcetree的安装、使用记录
  4. TV测试中的按键长按操作模拟
  5. nsDATA 转结构体
  6. 进程控制之vfork函数
  7. [转]使用Xcode和Instruments调试解决iOS内存泄露
  8. MSSQL - SqlDataReader
  9. Mysql编写定时任务事件
  10. c语音-第零次作业
  11. 痞子衡嵌入式:超级好用的可视化PyQt GUI构建工具(Qt Designer)
  12. 再见VB6!再见程序生涯!
  13. POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]
  14. XML系列之--解析电文格式的XML(二)
  15. [Java学习] Java Object类
  16. Java虚拟机(一):JVM简介
  17. Tomcat: 8080端口被占用
  18. Alpha阶段第1周 Scrum立会报告+燃尽图 07
  19. LOJ#2190. 「SHOI2014」信号增幅仪(最小圆覆盖)
  20. 数据库连接错误:CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.

热门文章

  1. Django框架之路由层汇总
  2. python_selenium 框架代码的优化方向
  3. Netty 框架学习 —— ByteBuf
  4. Nginx 配置文件介绍
  5. Linux面试题(史上最全、持续更新、吐血推荐)
  6. Ajax(内含json)认识
  7. Redundant Paths 分离的路径
  8. 基于ABP落地领域驱动设计-01.全景图
  9. 用python的matplotlib根据文件里面的数字画图像折线图
  10. 11、linux的目录结构