系统环境: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

vsftpd企业应用快速部署文档相关推荐

  1. HC项目本地快速部署文档

    本博客内容只是分享一下自己在使用这个hc重量级框架的内容,具体内容和问题还是以官方的内容为主,当然了官方有好多文档是错的我也为此走了不少弯路.(我也只是这个框架的使用者之一,有很多地方理解的不是很透彻 ...

  2. 完整企业官网源码,前端基于Vue+ElementUI,后台基于基于core3 webapi,含数据库文件,含详情安装部署文档

    完整企业官网源码,前端基于Vue+ElementUI,后台基于基于core3 webapi,含数据库文件,含详情安装部署文档 完整代码下载地址:完整企业官网源码 某工程管理有限公司企业官网 前端 新版 ...

  3. loganalyzer部署文档-(第一部分)

    loganalyzer部署文档 环境准备: 简介 LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端.它提供了对日志的简单浏览.搜索.基本分析和一些图表报告的功能.数据可以从 ...

  4. Docker部署文档

    Docker部署文档 目录 Docker部署文档 1 一.什么是Docker 3 1.1Docker简介 3 1.2对比传统虚拟机总结 4 1.3Docker通常用于如下场景: 5 1.4基本概念 5 ...

  5. Django+Linux+Uwsgi+Nginx项目部署文档

    Django+Linux+Uwsgi+Nginx项目部署文档 WSGI 在生产环境中使用WSGI作为python web的服务器 WSGI:全拼为Python Web服务器网关接口,Python We ...

  6. 云时代企业如何保护共享文档数据安全?

    本文讲的是云时代企业如何保护共享文档数据安全,越来越多的用户开始涌向云计算文件共享服务(例如Dropbox.Google Drive和iCloud),因为它们易于使用,并允许从任何地方访问数据.简言之 ...

  7. 华为云鲲鹏服务器部署文档--java微服务

    华为云鲲鹏服务器部署文档 河南中电高科计算机技术有限公司 2020.5.9 适用于java微服务技术栈. CentOS 7.6 64bit ISO 适用于鲲鹏服务器arm架构的CentOS 7.6.1 ...

  8. 华为云鲲鹏服务器部署文档-修正版-CentOS+java微服务开发

    华为云鲲鹏服务器部署文档 河南中电高科计算机技术有限公司 http://www.ceht.com.cn 2020.5.12 适用于java微服务开发运行基础软件环境部署,实测通过. CentOS 7. ...

  9. 2022最新IntellJ IDEA的mall开发部署文档

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

最新文章

  1. Linux那些事儿 之 戏说USB(大结局)还是那个match
  2. 《Engineering》评选2021年全球十大工程成就 | 中国工程院院刊
  3. 编译GSLSDevil的全过程
  4. Bootstrap4+MySQL前后端综合实训-Day07-PM【用户信息管理页面——功能展示(分页显示数据、添加用户、批量删除用户、编辑用户信息)、servlet项目代码整理汇总】
  5. matlab中的:的优先级_内容早期设计:内容优先
  6. PHPstudy搭建本地环境的网页加载速度慢的解决方案
  7. MCGS 无限配方数据存储及U盘导入导出-第二集
  8. threadlocal存连接对象的目的_ThreadLocal 介绍
  9. Seaborn学习记录(1)
  10. 轻松一刻,python乌龟绘图-小猪佩奇,可爱乌龟,新冠病毒
  11. excel查找在哪里_Excel办公自动化,让低值费时的工作自动进行
  12. 计算机创新课堂教案,1 1.1计算机概述1.2计算机系统课堂教学教案
  13. Stata数据处理:快速读取万德-Wind-数据-readWind2
  14. 关闭iOS上京东app不停询问“京东想从MF839粘贴”,您允许这样做吗? - 允许iphone应用访问剪切板
  15. 格子玻尔兹曼方法书中,计算机代码(Fortran语言)FDM的输出结果是什么,为什么显示程序“[25024] Console1.exe”已退出,返回值为 0 (0x0)。
  16. python算法专项(六)——Tensorflow原理基础,三层网络
  17. 到底什么是“被动收入”?
  18. Excel速度问题探讨.
  19. 两个正态随机向量不相关就意味着这两个随机向量独立?
  20. python执行CMD指令,并获取返回

热门文章

  1. js / jquery 零散收集
  2. BGP相邻体之间磋商的过程
  3. DZX2无法读取会员短消息
  4. VIM 必知必会12大类型操作
  5. CSLA .NET概述
  6. 什么是CPI指数和GDP
  7. Java组合实体模式
  8. 【redis】c/c++操作redis(对于hiredis的封装)
  9. 程序猿生存指南-4 借钱风波
  10. Nginx 虚拟主机配置及负载均衡