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
vsftpd企业应用快速部署文档相关推荐
- HC项目本地快速部署文档
本博客内容只是分享一下自己在使用这个hc重量级框架的内容,具体内容和问题还是以官方的内容为主,当然了官方有好多文档是错的我也为此走了不少弯路.(我也只是这个框架的使用者之一,有很多地方理解的不是很透彻 ...
- 完整企业官网源码,前端基于Vue+ElementUI,后台基于基于core3 webapi,含数据库文件,含详情安装部署文档
完整企业官网源码,前端基于Vue+ElementUI,后台基于基于core3 webapi,含数据库文件,含详情安装部署文档 完整代码下载地址:完整企业官网源码 某工程管理有限公司企业官网 前端 新版 ...
- loganalyzer部署文档-(第一部分)
loganalyzer部署文档 环境准备: 简介 LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端.它提供了对日志的简单浏览.搜索.基本分析和一些图表报告的功能.数据可以从 ...
- Docker部署文档
Docker部署文档 目录 Docker部署文档 1 一.什么是Docker 3 1.1Docker简介 3 1.2对比传统虚拟机总结 4 1.3Docker通常用于如下场景: 5 1.4基本概念 5 ...
- Django+Linux+Uwsgi+Nginx项目部署文档
Django+Linux+Uwsgi+Nginx项目部署文档 WSGI 在生产环境中使用WSGI作为python web的服务器 WSGI:全拼为Python Web服务器网关接口,Python We ...
- 云时代企业如何保护共享文档数据安全?
本文讲的是云时代企业如何保护共享文档数据安全,越来越多的用户开始涌向云计算文件共享服务(例如Dropbox.Google Drive和iCloud),因为它们易于使用,并允许从任何地方访问数据.简言之 ...
- 华为云鲲鹏服务器部署文档--java微服务
华为云鲲鹏服务器部署文档 河南中电高科计算机技术有限公司 2020.5.9 适用于java微服务技术栈. CentOS 7.6 64bit ISO 适用于鲲鹏服务器arm架构的CentOS 7.6.1 ...
- 华为云鲲鹏服务器部署文档-修正版-CentOS+java微服务开发
华为云鲲鹏服务器部署文档 河南中电高科计算机技术有限公司 http://www.ceht.com.cn 2020.5.12 适用于java微服务开发运行基础软件环境部署,实测通过. CentOS 7. ...
- 2022最新IntellJ IDEA的mall开发部署文档
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
最新文章
- Linux那些事儿 之 戏说USB(大结局)还是那个match
- 《Engineering》评选2021年全球十大工程成就 | 中国工程院院刊
- 编译GSLSDevil的全过程
- Bootstrap4+MySQL前后端综合实训-Day07-PM【用户信息管理页面——功能展示(分页显示数据、添加用户、批量删除用户、编辑用户信息)、servlet项目代码整理汇总】
- matlab中的:的优先级_内容早期设计:内容优先
- PHPstudy搭建本地环境的网页加载速度慢的解决方案
- MCGS 无限配方数据存储及U盘导入导出-第二集
- threadlocal存连接对象的目的_ThreadLocal 介绍
- Seaborn学习记录(1)
- 轻松一刻,python乌龟绘图-小猪佩奇,可爱乌龟,新冠病毒
- excel查找在哪里_Excel办公自动化,让低值费时的工作自动进行
- 计算机创新课堂教案,1 1.1计算机概述1.2计算机系统课堂教学教案
- Stata数据处理:快速读取万德-Wind-数据-readWind2
- 关闭iOS上京东app不停询问“京东想从MF839粘贴”,您允许这样做吗? - 允许iphone应用访问剪切板
- 格子玻尔兹曼方法书中,计算机代码(Fortran语言)FDM的输出结果是什么,为什么显示程序“[25024] Console1.exe”已退出,返回值为 0 (0x0)。
- python算法专项(六)——Tensorflow原理基础,三层网络
- 到底什么是“被动收入”?
- Excel速度问题探讨.
- 两个正态随机向量不相关就意味着这两个随机向量独立?
- python执行CMD指令,并获取返回