CentOS 下vsftp 配置及遇到的坑

vsftp 是一个linux下的ftp服务.

1. yum安装:   yum install vsftpd


2.

安装成功后,  打开/etc/vsftpd/vsftpd.conf, 在最后加上:



pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
local_root=/data/ftp_root/client_crash_log
tcp_wrappers=YES
listen_port=21
use_localtime=YES
userlist_file=/etc/vsftpd/user_list
local_enable=YES

其中:

local_root 是ftp的默认目录,记得自己创建一个目录, 把这个参数改成你创建的目录.

4.

允许上传的话, 把write_enable=YES的注释去掉


5.

用useradd命令添加一个用户, passwd设置密码,

把这个用户添加/etc/vsftpd/user_list 文件里


6.重启vsftpd。 service vsftpd restart


注意事项:

  1. 安全起见,添加的用户最好禁止用ssh登录,只能ftp专用.  其中一个方法: 在/etc/ssh/sshd_config 最后加上DenyUsers xxx   然后重启ssh服务, service sshd restart

  2. 客户端登录时可能会出现500报错, 问题的可能性很多: 

       (1)这个配置里ftpusers文件里的用户是禁止的, 检查下/etc/vsftpd/ftpusers里面有没有ftp的用户名,有的话去掉.                                     

       (2)还有个可能就是SELinux是开着的. sestatus -b | grep ftp   看看出来的列表是不是全是off. 用这个命令setsebool -P ftp_home_dir on  打开ftp的权限. 或者直接关掉SELinux, 关掉的方法自己去搜.


3.非常重要也容易被忽视,  如果按现在的设置, 那客户端是可以下载服务器上所有的文件的, 包括非该用户的文件, 只要其他文件允许被oter用户访问.        这里要把vsftpd.conf里面的chroot_local_user=YES  ,chroot_list_enable=YES,  chroot_list_file=/etc/vsftpd/chroot_list  这三项的注释去掉.  然后确保chroot_list_file指定的文件存在, 不然登录会报500.    这样设置好以后,所有的用户都只能访问自己的目录, 除了在chroot_list中的用户


   又踩到坑了, 一下是补充的:

   ftp正常运行了一段时间,  今天网管设置了硬件防火墙,把ftp的端口添加到允许列表中,其他端口禁止了.  然后就出事了, 客户端可以连上去,但是报"无法打开目录"错误. 这是由于之前ftp的端口其实只是登录验证相关的端口,数据要从另外的端口走.在生产环境中,一般都用被动模式pasv模式, 客户端连上后,服务器会开启一个高位的端口,通知客户端连上去,通过这个端口才能访问数据.  但是防火墙禁止了其他端口.   所有这里需要加一个范围的被动数据端口, 在vsftpd.conf中加入:

pasv_min_port=50001

pasv_max_port=51000

这样就把ftp会从50001-51000(可以随意设置没用过的段)这个范围内去开启数据端口.  然后防火墙把这个范围的端口打开就行了. 其他时候这些端口都是关上,也不会影响服务器的安全. 


©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页