vsftpd

FTP 简介

FTP 是文件传输协议,用于internet 上的控制文件的双向传输
ftp主要有三种用户:

列表内容
虚拟用户:仅用于访问某特定服务中的资源
系统用户
匿名用户
ftp有2种数据连接模式:命令连接和数据连接
FTP架构
FTP工作用于应用层,监听于TCP的21号端口,是一种C/S架构的应用程序
FTP数据的两种连接模式:
命令连接:指文件管理类命令,始终在线的持久性连接,直到用户退出登录为止
数据连接:指数据传输,按需创建及关闭连接
数据的传输模式分两种:
主动模式:首先是命令连接,客户端以一个(大于1023)的随机端口来连接服务器的21号端口,然后就是数据连接,服务器以自己的20号端口去连客户端创建命令连接时使用的随机端口+1的端口号

被动模式:由客户端创建数据连接,客户端以一个随机端口来连接服务器的21号端口,进行命令连接。数据连接是以客户端进行命令连接时创建的(随机端口+1)的端口号去连接服务器的一个随机端口

*主动模式有一个弊端,客户端的端口是随机的,客户端如果开了防火墙,服务器端去连接客户端创建数据连接时可能会被拒绝

/etc/pam.d/vsftpd //vsftpd用户认证 配置文件
/etc/vsftpd/ //配置文件目录
/etc/vsftpd/vsftpd.conf //主配置文件
//匿名用户(映射为ftp用户)的共享资源位置是 /var/ftp
//系统用户通过ftp访问的资源位置为用户的家目录
//虚拟用户通过ftp访问的资源位置为给虚拟用户指定的映射成为的系统用户的家目录

vsftpd常见的配置参数

参数作用
anonymous_enable=YES启用匿名用户登录
anon_upload_enable=YES允许匿名用户上传
anon_nkdir_write_enable=YES允许匿名用户创建目录,但是不能删除
anon_other_write_enable=YES允许匿名用户创建和删除目录
local_enable=YES启用本地用户登录
write_enable=YES允许本地用户有写权限
local_umask=022通过ftp上传文件的默认遮罩码
chroot_list_enable=YES开启禁锢文件列表,需要与chroot_list_file参数一起使用
chroot_list_file=/etc/vsftpd/chroot_list指定禁锢列表文件路径,在此文件里面的用户将被禁锢在其家目录中
allow_writeable_chroot=YES允许被禁锢的用户家目录有写权限
xferlog_enable=YES是否启用传输日志,记录ftp传输过程
xferlog_std_format=YES传输日志是否使用标准格式
xferlog_file=/var/log/xferlog指定传输日志存储的位置
chown_uploads=YES是否改变上传文件属主的功能
chown_username=whoever指定要将上传的文件的属主改为哪个用户,此用户必须是系统中存在的
pam_service_name=vsftpd指定vsftpd使用/etc/pam.d下的哪个pam配置文件进行用户认证
userlist_enable=YES是否启用控制用户登录的列表文件:默认为/etc/vsftpd/use_list文件
userlist_deny=YES是否拒绝userlist指定的列表文件中存在的用户登陆ftp
max_clients=#最大并发连接数
max_per_ip=#每个IP可同时发起的并发请求数
anon_max_rate匿名用户的最大传输速率,单位是"字节/秒"
local_max_rate本地用户的最大传输速率,单位是"字节/秒"
dirmessage_enable=YES启用某目录下的。message描述信息,假定有一个目录为/upload,在其下创建一个文件名为.message,在文件内写入一些描述信息,则当用户切换至/upload目录下时会自动显示。message文件中的内容
message_file设置访问一个目录时获得的目录信息文的文件名默认是.message
idle_session_timeout=600设置默认的断开不活跃session的时间
date_connection_timeout=120设置数据传输超时时间
ftpd_banner=“Welcome to c henlf FTP service.”定制欢迎信息,登录ftp时自动显示

*** 虚拟用户账号的存储方式 **:
1.文件:编辑文件,此文件需要被编码为hash格式
奇数行为用户名,偶数行为密码
2.关系型数据库的表中:
通过即使查询数据库完成用户认证
mysql库:pam要依赖于pam_mysql软件,可通过epel源yum安装

配置vsftpd虚拟用户配置

安装依赖程序
初始环境没有yum仓库,在此可用网络源下载:

[root@vsftp-server ~]# mv /etc/yum.repos.d/* /opt/
[root@vsftp-server /]# cd /etc/yum.repos.d/
[root@vsftp-server yum.repos.d]# curl  -o  163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo  
[root@vsftp-server yum.repos.d]# sed -i "s#\$releasever#7#g" 163.repo 
[root@vsftp-server yum.repos.d]# sed -i "s#enabled=0#enabled=1#g"  163.repo
[root@vsftp-server yum.repos.d]# yum clean all
[root@vsftp-server yum.repos.d]# yum install -y epel-release
[root@vsftp-server /]# yum install -y vsftpd   //安装vsftp服务

创建文本格式的用户名,密码列表

[root@vsftp-server yum.repos.d]# cd /etc/vsftpd/
[root@vsftp-server vsftpd]# touch vu.list   
[root@vsftp-server vsftpd]# vim vu.list 
[root@vsftp-server vsftpd]# cat vu.list   //添加了一个用户名,下面是用户对应的密码
chens
123

安装db4工具

[root@vsftp-server ~]# yum install -y db4*

将刚创建的文本格式用户名,密码文件使用db4工具转成数据库文件

[root@vsftp-server ~]# db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db
/// -T 表示转换  -t 表示加密方式使用hash算法加密

设置文件权限为600,以避免数据外泄

[root@vsftp-server ~]# chmod 600 /etc/vsftpd/vu.*
[root@vsftp-server ~]# ll /etc/vsftpd/vu*
-rw-------. 1 root root 12288 Aug  8 07:17 /etc/vsftpd/vu.db
-rw-------. 1 root root    10 Aug  8 07:11 /etc/vsftpd/vu.list

添加虚拟用户的映射账号,创建ftp根目录。

[root@vsftp-server ~]# useradd -d /opt/six -s /sbin/nologin vftp     // -d  指定用户的家目录   -s  指定用登录的shell nologin 此处表示不允许登陆
[root@vsftp-server ~]# chmod 755 /opt/six/

为虚拟用户建立PAM认证

[root@vsftp-server ~]# mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
[root@vsftp-server ~]# vim /etc/pam.d/vsftpd
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vu
account required pam_userdb.so db=/etc/vsftpd/vu

修改vsftpd配置文件,添加虚拟用户支持

[root@vsftp-server ~]# vim /etc/vsftpd/vsftpd.conf 
guest_enable=YES	//允许所有人访问
guest_username=vftp	//允许通过用户名vftp访问
user_config_dir=/etc/vsftpd/vusers_dir   //与虚拟用户建立映射关系 
allow_writeable_chroot=YES	//允许用户家目录有写权限

为不同的虚拟用户建立独立的配置文件,并设置虚拟用的权限

[root@vsftp-server vsftpd]# mkdir vusers_dir
[root@vsftp-server vsftpd]# vim /etc/vsftpd/vusers_dir/chens
[root@vsftp-server vusers_dir]# cat  chens 
anon_upload_enable=YES		//允许匿名用户上传
anon_mkdir_write_enable=YES     //允许匿名用户创建目录权限
anon_umask=022			//设置匿名用户的umask权限
anon_other_write_enable=YES	//允许匿名用户创建和删除目录

关闭防火墙,关闭SELINUX ,启动服务

[root@vsftp-server ~]# systemctl  stop firewalld    //关闭防火墙
[root@vsftp-server ~]# systemctl   disable firewalld     //开机不启动防火墙
[root@vsftp-server ~]# setenforce  0			//关闭selinux
[root@vsftp-server ~]# sed -i 's#^SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux      //修改配置文件,开机不启动selinux
[root@vsftp-server ~]# systemctl start vsftpd 	      //启动服务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值