学习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、刚安装完vsftp后,/etc/vsftpd/下的文件ftpusers,user_list,vsftpd.conf,vsftpd_conf_migrate.sh。

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

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

 

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

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

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

用于指定用户列表文件,需要自己手动创建)

不显示以点开头的隐藏文件)

  

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

500 OOPS: chroot
  please specify the password

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

  实现预期效果。

 

  6、临时关闭Selinux方法

# getenforce  //查看Selinux状态
  Enforcing
  # setenforce 0 //临时关闭Selinux,立即生效
  # getenforce
  Permissive

 

  7、新建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这一行,添加上再次登陆,成功。