vsftpd企业应用快速部署文档
系统环境:centos 5.6
vsftpd:2.3.5
vsftpd是UNIX/Linux中非常安全且快速的FTP服务器,目前已经被许多大型站点所采用。vsftpd支持将用户名和口令保存在数据库文件或数据库服务器中。登录FTP有三种方式,匿名登录、本地用户登录和虚拟用户登录:
匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous;
本地用户登录:使用系统用户登录,在/etc/passwd中;
虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器;
FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大增强了系统的安全。
一、vsftpd安装
1.安装必要的支持文件
db4
db4-devel
db4-utils
2.开始安装vsftpd
(1)源码包安装
下载最新稳定版本:vsftpd-2.3.5.tar.gz
tar zxvf vsftpd-2.3.5.tar.gz
cd vsftpd-2.3.5
./configure
make
make install
cd ../
(2)yum自动安装
yum install vsftpd
(3)rpm包安装
rpm -qa |grep vsftpd
rpm -ivh vsftpd-2.0.5-16.el5_5.1.i386.rpm
二、vsftpd配置
1.本地数据文件方式
(1)添加虚拟用户口令文件
vim /etc/vsftpd/vftpuser.txt
#添加虚拟用户名和密码,奇数行为用户名,偶数行为密码
xiaojiang
cusAVnRfwnK3sYaD
test
qPJN5pyy73hSAqnU
(2)生成虚拟用户口令认证文件
将刚添加的vftpuser.txt虚拟用户口令文件转换成系统识别的口令认证文件。
首先查看系统有没有安装生成口令认证文件所需的软件db4-utils。
rpm -qa |grep db4-utils
yum install db4 db4-utils db4-devel
使用db_load命令生成虚拟用户口令认证文件
db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db
chmod 0600 /etc/vsftpd/vftpuser.*
查看生成虚拟用户口令认证文件
file /etc/vsftpd/vftpuser.db
(3)编辑vsftpd的PAM认证文件
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_bak
vim /etc/pam.d/vsftpd
#其他都注释掉,添加下面这两行:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
****************************
说明:(2014-06-12更新)
在实际工作中,我们使用的系统更多的是64位的,所以,我们在添加上面两行文件时,参考下面的方式来添加:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
在此,先检查文件pam_userdb.so在什么位置,一般是在:/lib64/security/pam_userdb.so
如果我们按照最开始的方式添加,在登录ftp用户时提示错误:530 Login incorrect
检查日志:tail -f /var/log/secure
发现下面错误信息:
Jun 12 13:52:39 VM_166_69_centos vsftpd[4872]: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: wrong ELF class: ELFCLASS32
Jun 12 13:52:39 VM_166_69_centos vsftpd[4872]: PAM adding faulty module: /lib/security/pam_userdb.so
*************************
(4)建立本地映射用户并设置宿主目录权限
所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码。
mkdir /home/vftpsite
useradd -d /home/vftpsite -s /sbin/nologin vftpuser
chmod 0777 /home/vftpsite
(5)配置vsftpd.conf(设置虚拟用户配置项)
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_umask=022
#开启虚拟用户
guest_enable=YES
#虚拟用户对应的系统用户
guest_username=vftpuser
#PAM认证文件
pam_service_name=vsftpd
(6)重启vsftpd服务
service vsftpd restart
说明:vsftpd上传下载默认路径为/home/vftpsite
(7)测试虚拟用户登录
ftp 192.168.1.22
(8)为指定虚拟用户建立独立的配置文件
vim /etc/vsftpd/vsftpd.conf
#添加用户配置目录支持
user_config_dir=/etc/vsftpd/vusers_dir
为用户建立独立的配置目录及文件,配置文件名与用户名同名
mkdir /etc/vsftpd/vusers_dir/
cd /etc/vsftpd/vusers_dir/
vim xiaojiang
输入以下内容:
local_root=/home/vftpsite
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
2.数据库服务器方式
(1)安装mysql
具体安装见另外文档
(2)建立本地映射用户并设置宿主目录权限
mkdir /home/vftpsite
useradd -d /home/vftpsite -s /sbin/nologin vftpuser
chmod 0700 /home/vftpsite
(3)配置vsftpd.conf(设置虚拟用户配置项)
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_umask=022
#开启虚拟用户
guest_enable=YES
#虚拟用户对应的系统用户
guest_username=vftpuser
#PAM认证文件
pam_service_name=vsftpd
(4)在MySQL中建立用户口令数据库
mysql -u root -p
#建立虚拟用户数据库,库名vftpuser
create database vftpuser;
use vftpuser;
#建立虚拟用户口令表,表名users
create table users(name char(32) binary,passwd char(48) binary);
#建立两个虚拟用户,bobyuan和markwang
insert into users (name,passwd) values ('xiaojiang','cusAVnRfwnK3sYaD');
insert into users (name,passwd) values ('test','qPJN5pyy73hSAqnU');
#授权vftpuser这个账号可以读取vftpuser数据库的user表
grant select on vftpuser.users to vftpuser@localhost identified by 'AW978jdIfrDc';
flush privileges;
#验证vftpuser用户是否设置成功
注:
1.虚拟用户密码经过MySQL加密,加密后的密码pam-mysql不能识别(MySQL和pam-mysql兼容性有些问题),因此使用明文保存密码。
2.批量添加用户
vi vftpuser.txt
#添加用户名和密码,注意字段之间要用Tab键隔开。
xiaojiang cusAVnRfwnK3sYaD
test qPJN5pyy73hSAqnU
use vftpuser;
load data local infile "/vftpuser.txt" into table users;
flush privileges;
(5)编译MySQL的PAM认证模块
查看/lib/security目录下有没有MySQL对应的PAM模块。
ll /lib/security/pam_mysql*
tar -zxvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
./configure --with-mysql=/usr/local/webserver/mysql/ --with-pam-mods-dir=/lib/security/
make
make install
(6)编辑vsftpd的PAM认证文件
vim /etc/pam.d/vsftpd
其他都注释掉,添加下面这两行:
auth required /lib/security/pam_mysql.so user=vftpuser passwd=123456 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=2 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime verbose=1
account required /lib/security/pam_mysql.so user=vftpuser passwd=123456 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=2 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime verbose=1
说明:
crypt=0:表示口令使用明文方式保存在数据库中
crypt=1:表示口令使用UNIX的DES加密方式加密后保存在数据库中
crypt=2:表示口令使用MySQL的password()函数加密后保存在数据库中
crypt=3:表示口令使用MD5散列值的方式保存在数据库中
(7)重启vsftpd服务
service vsftpd restart
说明:vsftpd上传下载默认路径为/home/vftpsite
(8)测试虚拟用户登录
ftp 192.168.1.22
三、virtual_use_local_privs参数说明
当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。
当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,
anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。
四、虚拟用户配置文件
1. 所有虚拟用户使用统一配置
vim /etc/vsftpd/vsftpd.conf
添加如下内容:
write_enable=YES
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=vftpuser
virtual_use_local_privs=NO
pam_service_name=vsftpd
#可以下载
anon_world_readable_only=NO
#不能上传,默认为no
anon_upload_enable=NO
#不能新建文件夹
anon_mkdir_write_enable=NO
#不能删除和重命名文件
anon_other_write_enable=NO
ftpd_banner=Welcome to onbing's FTP server
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
tcp_wrappers=NO
setproctitle_enable=YES
listen_port=21
connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=0
max_per_ip=3
local_max_rate=512000
2. 各个虚拟用户使用自身配置
vim /etc/vsftpd/vsftpd.conf
添加内容如下:
write_enable=YES
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=vftpuser
virtual_use_local_privs=NO
pam_service_name=vsftpd
#指定虚拟用户配置文件路径
user_config_dir=/etc/vsftpd/vsftpd_user_conf
ftpd_banner=Welcome to onbing's FTP server
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
tcp_wrappers=NO
setproctitle_enable=YES
listen_port=21
connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=0
max_per_ip=3
local_max_rate=512000
#新建虚拟用户配置文件路径
mkdir /etc/vsftpd/vsftpd_user_conf
#编辑xiaojiang的配置文件
vi /etc/vsftpd/vsftpd_user_conf/xiaojiang
添加如下内容:
#只开放下载权限。注意这个地方千万不能写成YES,否则xiaojiang将不能列出文件和目录
anon_world_readable_only=NO
#编辑test的配置文件
vi /etc/vsftpd/vsftpd_user_conf/test
添加内容如下:
#开放写权限
write_enable=YES
#开放下载权限
anon_world_readable_only=NO
#开放上传权限
anon_upload_enable=YES
#开放创建目录的权限
anon_mkdir_write_enable=YES
#开放删除和重命名的权限
anon_other_write_enable=YES
《全文完》
说明:
1.具体企业应用(略)
2.本文参考文档:《Vsftpd FTP服务器-虚拟用户(mysql)和本地用户同时验证》
本文转自自由心行博客51CTO博客,原文链接http://blog.51cto.com/xiaojiang2008/798136如需转载请自行联系原作者
xiaojiang
相关文章:

华为持续引领,开辟5G Massive MIMO绿色新赛道
今日,在华为举办的无线首届媒体沙龙暨MBBF2021预沟通会上,华为无线产品线首席营销官甘斌发表了“华为持续引领,开辟5G Massive MIMO绿色新赛道”的主题发言,分享了Massive MIMO的下一个突破性创新方向,引领绿色5G网络建…

MRTG—网络监控工具
最近一段时间在研究后台服务器测试技术,需要对后台服务器的各项性能指标进行实时监控和统计,也由此让我回想起之前公司曾经接触过的一个服务SNMP,SNMP是一种称之为简单网络管理协议的服务,主要是用于获取系统的流量、I/O、CPU、Me…

IBM会话设置和覆盖规则
为什么80%的码农都做不了架构师?>>> 中文版地址:http://www-01.ibm.com/support/docview.wss?uidswg21659740 Technote (troubleshooting) Problem(Abstract) It is possible to set the HTTP Session time-out in various places on th…

FOSCommentBundle功能包:设置Doctrine ODM映射
Step 2b: Setup MongoDB mapping The MongoDB implementation does not provide a concrete Comment class for your use,you must create one: MongoDB实现并不提供为您所用的具体评论类,您必须要创建一个。 1234567891011121314151617181920212223<?php// src…

lighttpd 负载均衡-反向代理+cache浅谈
Lighttpd有硬盘级别的cache-(mod_cache)和内存级别的cache(mod_mem_cache),内存级别的cache是国人的产品,我喜欢用lighttpd就是因为它具有2种选择的cache,像我的实际需求,由于系统存在很多图片,但是容量不大…

设置网页标题图标
网页图标如图上位置 设置语句如下: link rel:"SHORTCUT ICON", href:"/images/logo.ico"

DeepMind 的新强化学习系统,是迈向通用人工智能的一步吗?
作者:Ben Dickson来源:数据实战派前言尽管已经掌握围棋、星际争霸 2 和其他游戏,深度强化学习模型的主要挑战之一是,它们无法将其能力泛化到训练领域之外。这种限制使得将这些系统在现实世界中的应用变得非常困难,因为…

无法访问D盘,执行页内操作时的错误
打开D盘后出现“无法访问D:/,执行页内操作时的错误”怎么办?既便D盘有病毒也不会出现这种状况,初步判断是D: 分区表错误,用系统安装光盘开机进入纯DOS下的修复模式中用 CHKDSK /R 或 /F来修复一下试试看。在cmd下输入chkdsk空格d:空格/f本文转…

怎样修改Ubuntu的root帐户密码并使用root登录
Ubuntu版本11.04 Ubuntu是一套基于Debian的Linux系统,它追求的是“Just Work”,最新的7.10版本发布于2007年10月,不同于其他Linux发行版本,Ubuntu的所有版本都是免费的,包括企业版。第一次安装Ubuntu,发现比…

CSDN 开学见面礼!限时免费申请,手慢无!
暑假即将结束,金秋开学季来袭。别让年轻的自己虚度光阴,现在扫码申请学习资格,10+场考前辅导,600+分钟大咖讲解与答疑直播免费看!大厂CTO级别导师陪你加buff!3周带你掌握大厂工程师基…

【No.1_sizeof与strlen】
【注意】 程序语言只是我们与计算机交流并让计算机实现我们创造性思想的工具,可以并鼓励深入掌握一门语言,但千万别沉迷于钻某种语言的牛角尖,一定要把握好二者间的度 本帖属不定时连载贴,以试卷的形式提出一个比较基础的问题供大…

Linux: CentOS 7下搭建高可用集群
转载: http://linux.cn/article-3963-1.html本文以两台机器实现双集热备高可用集群,主机名node1的IP为192.168.122.168 ,主机名node2的IP为192.168.122.169 。一、安装集群软件必须软件pcs,pacemaker,corosync…

史上最大规模 DDoS 攻击,每秒 1720 万次 HTTP 请求
整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 互联网基础设施公司 Cloudflare 表示,已化解了迄今为止所记录的最大规模的容量耗尽分布式拒绝服务(DDoS)攻击。 近日,互联网基础设施服务提供商 Cloudfl…

如何查看当前Linux的版本
查看linux的版本主要有三种方法:1) 登录到服务器执行 lsb_release -a ,即可列出所有版本信息,例如:[root3.5.5Biz-46 ~]# lsb_release -a LSB Version: 1.3Distributor ID: RedHatEnterpriseASDescription: Red Hat Enterprise Li…

AIX5.3安装bash shell
一、下载bash shell,地址是:ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/bash/ 二、安装bash shell,rpm -ivh bash-3.2-1.aix5.2.ppc.rpm三、你现在就可以用了,赶紧bash试试!----你可能会有疑问我的系统的是…

经典算法题每日演练——第六题 协同推荐SlopeOne 算法
原文:经典算法题每日演练——第六题 协同推荐SlopeOne 算法相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,“商品推荐”,"猜你喜欢“,在实体店中我们有导购来为我们服务,在网络上 我们需要同样的一种替代物&…

基于 Python 环境搭建 - YOLO 实现吸烟行为监测
作者|李秋键 出品|AI科技大本营(ID:rgznai100) 引言 目标检测是一种与计算机视觉和图像处理有关的计算机技术, 用于检测数字图像和视频中特定类别的语义对象 (例如人、建筑物或汽车等), 其在视频安防,自动驾驶, 交通监控, 无人机场景分析和机器人视觉等领域有广阔的应用前景。近…

Ubuntu 下安装thttpd Web服务器
不知道大家是不是真的需要用appache这么复杂的功能这么强大的web server,其实有很多时候使用webserver也只是一种远程共享访问的方式。这里,Ubuntu repository的提供了一个简单的web server,名为thttpd,即 tiny http daemon. th…

mysql 新增 删除用户和权限分配
1. 新增用户 mysql>insert into mysql.user(Host,User,Password) values("localhost","lionbule",password("hello1234")); mysql>flush privileges; 2. 修改用户密码 mysql>update mysql.user set passwordpassword(new password)…

简历空空,如何编写一个面试时能拿的出手的真实项目?
最近,新一波的秋招全面开启,各大互联网行业像腾讯、百度、美团、哔哩哔哩,都加入到招聘队伍,秋招面试也进入白热化。作为一名求职者,要想在招聘浪潮中抢先一步,锁定大厂Offer,现在就要着手准备起…

mysql通过查看跟踪日志跟踪执行的sql语句
在SQL SERVER下跟踪sql采用事件探查器,而在mysql下如何跟踪sql呢? 其实方法很简单,开启mysql的日志log功能,通过查看跟踪日志即可。 开启mysql的日志log方法: windows环境下的配置方法: 我使用的版本&#…

用thttpd做Web Server
httpd是busybox中自带的web server,功能弱,不支持认证和CGI。thttpd和boa都支持认证CGI,功能比较全,Boa是一个单任务的小型http服务器,设计的小型系统不要数据库操作,所以可以使用thttpd作为server.1. 编译thttpdccarm…

ii第六单元 文本处理工具
linux中常用的基础命令 diff 命令 patch 命令 grep 命令 Cut 命令 sort 命令 uniq 命令 tr 命令 sed 命1.diff 命令 比较两个文件的不同 用于创建补丁文件 diff -u file file.new >file.path ##生成补丁文件 yum install patch -y ##安装打补丁工具 (1&…

Powershell管理系列(十)邮件联系人及邮件用户的管理
鉴于有些用户不太熟悉邮件联系人、邮件用户的区别,博文首先介绍下用户邮箱、邮件联系人、邮件用户的概念,以下介绍部分博文摘自winos微软中文技术论坛。---------------------------------------------------------------------------------------------…

移植 thttpd Web服务器
从http://www.acme.com/software/thttpd/ 下载thttpd 到/tmp 目录当中,并解压. 编译thttpd [armlocalhost thttpd-2.25b]$ CCarm-linux-gcc ./configure --hostarm-linux [armlocalhost thttpd-2.25b]$ vi Makefile 指定静态链接二进制文件 LDFLAGS -static …

懂外语、会创作,机器高质量学习挑战均在这里实现
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 近年来人工智能在不断的发展中,机器不仅已经学会了英语写作,也正在学习其它语言。 德国 Aleph Alpha 已经构建了世界上最强大的 AI 语言模型之一。它不仅能说流利的英语…

JPA 复杂查询 - Querydsl
添加依赖 <!--query dsl --> <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-jpa</artifactId> </dependency> <dependency> <groupId>com.querydsl</groupId> <artifactId>qu…

服务器端开发经验总结 Linux C语言
简介在进行服务器端开发的时候需要考虑一些算法和性能问题,经过了几年的开发,对这方面有了一些经验,现在写下来跟大家分享和讨论。我主要是在Linux下进行C语言的开发,所以后面的实现都是基于Linux操作系统并用C语言来讲解。其它平…

Backbone.js学习笔记 Hello World!
使用Backbone.js 和 MVC 架构创建一个典型的Hello world项目。虽然是“杀鸡用牛刀了”,毕竟是我第一次使用Backbone.js 依赖 jQuery 1.9.1Undersore.js 1.5.0Backbone.js开始 <!doctype html> <html> <head> <meta charset"utf-8"&g…

一文速览机器学习的类别(Python代码)
作者:泳鱼来源:算法进阶机器学习按照学习数据经验的不同,即训练数据的标签信息的差异,可以分为:*监督学习(supervised learning)*非监督学习(unsupervised learning)*半监…