朱清林's Blog

朱清林's Blog

Centos7安装vsftpd配置虚拟用户登录

我使用的Linux系统版本是Centos7,vsftpd是3.0.2,在配置的过程中遇到各种权限和5xx错误问题,最后整理成配置文档。中间在vsftpd端口那块,如果你的项目不需要改ftp的默认端口(21),略过那些配置就行了。

附件中是我用python写的自动安装包,解压后,进到目录执行./install 就可以了,目前只在Centos7上测试了,其他系统版本没有测试过。自动安装完后,会创建4个虚拟用户,其中一个是xiaozhu,密码是123456,端口改为了14100,可以用这个用户测试一下。

一、yum安装vsftpd  

  1. yum install -y vsftpd
  2. 或者下载rpm安装 

 二、配置虚拟用户访问

1.编辑配置文件 vim /etc/vsftpd/vsftpd.conf 注意:所有的配置参数后面不能出现空格,不存在的配置选项,需要添加进去

#关闭匿名访问
anonymous_enable=NO
		
#禁锢用户在宿主目录下
chroot_local_user=YES
		  
#开启根目录写的权限
allow_writeable_chroot=YES
		  
#开启被动模式
pasv_enable=YES
		  
#被动模式下最大端口
pasv_max_port=9054
		  
#被动模式下最小端口
pasv_min_port=9050
		  
#修改ftp端口
listen_port=14100 (没有需要,可以忽略这个)
		  
#开启虚拟账户登录
guest_enable=YES
		  
#虚拟账户使用的本地用户
guest_username=vuser
		  
#虚拟用户开启本地用户权限
virtual_use_local_privs=YES
		  
#虚拟用户的配置文件地址
user_config_dir=/etc/vsftpd/vusers.d/

 2.修改services(如果没有修改ftp默认端口,可忽略这一步

vim /etc/services  #把21端口改为14100

ftp             14100/tcp
ftp             14100/udp          fsp fspd

3.创建chroot_list文件,否则登录ftp会报文件找不到的错误

touch /etc/vsftpd/chroot_list

4.创建虚拟用户文件,奇数行为虚拟用户名,偶数行为密码

vim /etc/vsftpd/vusers.txt

5.生成db口令数据库文件

db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db

6.设置PAM认证

vim /etc/pam.d/vsftpd  #注:db=/etc/vsftpd/vusers 格式是这样的,去掉.db后缀

注释掉里面的内容,添加以下内容(注:64位系统):

auth        sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/vusers
account     sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/vusers

32位系统添加以下内容

auth        sufficient      /lib/security/pam_userdb.so     db=/etc/vsftpd/vusers
account     sufficient      /lib/security/pam_userdb.so     db=/etc/vsftpd/vusers

7.创建目录

mkdir -p /tpcloud/wwwroot

8.创建ftp宿主用户

useradd -d /tpcloud/wwwroot/ftp -s /sbin/nologin vuser

9.创建每个ftp虚拟用户的根目录

mkdir /tpcloud/wwwroot/ftp/pic
mkdir /tpcloud/wwwroot/ftp/cdms
mkdir /tpcloud/wwwroot/ftp/crm
mkdir /tpcloud/wwwroot/ftp/pms

10.为目录设置权限

chown -R vuser:vuser /tpcloud/wwwroot/ftp/*

11.创建虚拟用户配置文件目录

mkdir /etc/vsftpd/vusers.d

12.配置虚拟用户

vim /etc/vsftpd/vusers.d/tpcloud  #注:每个用户对应一个配置文件,配置文件名是用户名

#指定虚拟用户仓库的具路径
local_root=/tpcloud/wwwroot/ftp/pic

#设定不允许匿名访问
anonymous_enable=NO
			  
#允许写的操作
write_enable=YES
		     
#上传文件的权限掩码
local_umask=022
		      
#不允许匿名上传
anon_upload_enable=NO
			  
#不允许匿名用户建立目录
anon_mkdir_write_enable=NO
			  
#设定空闲链接超时时间
idle_session_timeout=300
			  
#设定单次传输最大时间
data_connection_timeout=1000
			  
#设定并发客户端的访问数量
max_clients=0
			  
#设定客户端的最大线程数
max_per_ip=0
			  
#设定用户的最大传输速率,单位b/s
local_max_rate=0
			  

三、服务配置

1.添加SELinux规则,否则ftp登录会报(500 OOPS: chroot)错误

setsebool -P allow_ftpd_full_access 1  #注:这个命令适用于centos6或者7,其他系统没有试过

 2.设置防火墙,开启相应的端口 (注:如果没有vsftpd没有开启被动模式,只需开启20和21端口,下面命令适用于centos7

firewall-cmd --zone=public --add-port=20/tcp --permanent
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=9050/tcp --permanent
firewall-cmd --zone=public --add-port=9051/tcp --permanent
firewall-cmd --zone=public --add-port=9052/tcp --permanent
firewall-cmd --zone=public --add-port=9053/tcp --permanent
firewall-cmd --zone=public --add-port=9054/tcp --permanent
firewall-cmd --zone=public --add-port=14100/tcp --permanent
systemctl restart firewalld

3.把vsftpd加入到系统服务,开机自动运行

systemctl enable vsftpd.service

4.重启vsftpd服务

systemctl restart vsftpd.service

 

原文地址:http://www.lltonet.com/13.html

附件下载: vsftpd-2018-01-18.tar.gz 

阅读 51   190