一,安装相关工具包
#yum -y install pam vsftpd db4 db4-utils
-- pam 是用来提供身份验证的
-- vsftpd 是ftp服务的主程序
-- db4支持文件数据库
-- db4的工具包

二,创建一个不能登录的用户,用作ftp服务的虚拟用户
由于这个ftp用户将来都是用来向网站上传文件的,所以
创建用户的时候将这个用户的家目录设置在web服务器的根目录
#useradd -d /home/web -s /sbin/nologin vuser_ftp
-d /home/web --指定用户的家目录;/home/web是web服务器的根目录
-s /sbin/nologin --指定用户的shell /sbin/nologin表示不能登录到shell
这里使用vuser_ftp作为虚拟用户的映射对象,在web服务器中可以使用httpd
这个服务的用户来作为虚拟用的映射。比如www apapche web

三,创建一个记录ftp虚拟用户的用户名和密码文件(文件名随便指定这里用login.txt)
此文件的格式为:一行用户名,换一行密码;多个用户分行写入。
例如:
#vi /etc/vsftpd/login.txt
test1
test1passwd
test2
test2passwd

四,使用db_load 命令生成虚拟用户认证文件
#db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db
longin.txt 文件是刚刚新建的用户名和密码文件。
vsftpd_login.db文件是db_load命令生成的虚拟用户认证文件,这个文件用vi打开
是看不到的,而且这个db文件的权限是600
db_load 这个命令是由db4-utils软件包提供的。如果没有这个命令就需要用安装
db4-utils这个安装包。redhat和centos可以直接用
#yum -y install db4-utils 来安装之前我已经用yum安装了 几个包同时安装的
其他版本的linux系统用其他的工具。

#
#目前login.txt内容是实验环境,如果需要增加用户就把用户名和密码按照规定的
#格式写入login.txt文件。每次增加完虚拟用户之后都用使用db_load 上面执行过
#那条命令来更新vsftpd_login.db这个虚拟用户认证文件。
#

五,修改ftp服务配置文件/etc/vsftpd/vsftpd.conf
可以把/etc/vsftpd/vsftpd.conf 备份一下然后修改vsftpd.conf 或者备份之后
重写一个vsftpd.conf文件
本次实验的vsftpd.conf 内容如下:
#vi /etc/vsftpd/vsftpd.conf
----------------------------------------------------------------------
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
max_per_ip=5
max_clients=100

#### 下面是关于虚拟用户的配置

guest_enable=YES #打开用户虚拟

guest_username=vuser_ftp #将所有虚拟用户映射成vuer_ftp这个本地用户
#此用户是之前新建的用户

pam_service_name=ftp.vu #ftp用户的pam验证方式,默认是vsftpd,必须改掉。
user_config_dir=/etc/vsftpd/vsftpd_user_conf #这里放置每个虚拟用户的配置文件
-------------------------------------------------------------------------
#####特别注意:vsftpd.conf 这个配置文件中每行的两端都不能有空格######

六,创建vsftpd.conf中提到的验证文件。
(1)使用 #rpm -ql vsftpd 这个命令查找验证模块的例文
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam
(2)然后拷贝到vsftpd.conf文件中配置的路径中并改变文件名
这条选项 pam_service_name=ftp.vu中ftp.vu使用的是相对路径。
绝对路径为: /etc/pam.d/ftp.vu
#cp /usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /etc/pam.d/ftp.vu
上面这条命令就是把vsftpd程序自带的关于pam认证的模板文件拷贝到pam.d这个服务的工作
目录,同时改变文件名为ftp.vu;/etc/pam.d/目录下已经有了一个vsftpd.pam文件,
现在要做的是让vsftpd虚拟用户的这个功能用到的一个特殊的pam认证。还要修改下ftp.vu这个
文件
先来看下原文件的内容:
#vi /usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
在看下本次实验修改后的内容
#vi /etc/pam.d/ftp.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
-----
这里有两个需要注意修改的地方:
1,db=/etc/vsftpd/login 修改成db=/etc/vsftpd/vsftpd_login
把db= 定义的是验证数据文件存放的位置,这个文件是以.db结尾的。但是在/etc/pam.d/ftp.vu
中配置的时候不要加上.db
2,配置文件中间的 /lib/security/pam_userdb.so 如果你的系统是64位的,那么相应的路径
应是/lib64/security/pam.userdb.so 不然会出错

七,创建vsftpd.conf中提到的虚拟用户配置目录 。user_config_dir=/etc/vsftpd/vsftpd_user_conf
以及在这个目录下面创建每个用户的权限配置文件
1,创建/etc/vsftpd/vsftpd_user_conf目录:
#mkdir /etc/vsftpd/vsftpd_user_conf
2,在/etc/vsftpd/vsftpd_user_conf目录下面分别创建之前在login.txt虚拟用户名和密码文件中
提到的test1 test2 这两个虚拟用户的权限配置文件
可以使用#touch test1 命令先创建这个文件然后再用vi进行编辑。也可以直接用vi打开一个不
存在的文件,编辑后保存就可以了
#vi /etc/vsftpd/vsftpd_user_conf/test1
3,虚拟用户配置文件内容如下
#vi /etc/vsftpd/vsftpd_user_conf/test1
anon_world_readable_only=no #用户可以浏览和下载文件,不能设为yes,否则无法看到文件
write_enable=yes #用户可以创建文件
anon_upload_enable=yes #用户可以上传文件
anon_mkdir_write_enable=yes #用户有创建和删除目录的权限
anon_other_write_enable=yes #用户具有文件改名和删除文件的权限
local_root=/home/web/html #指定这个虚拟FTP用户的家目录。这里的html是你网站的根目录
在虚拟用户配置文件中以yes和no 这两个参数根据实际情况来控制ftp用户的权限,或者把对应的
语句删除
######这里需要注意的是配置语句的两端都不能有空格
之后在创建test2的权限控制文件
#cp /etc/vsftpd/vsftpd_user_conf/test1 /etc/vsftpd/vsftpd_user_conf/test2
在test2 文件中修改下test2文件的家目录即可

八,到这里,ftpd 的虚拟用户配置完毕。重启ftp服务就可以使用虚拟用户登录ftp
vuser_ftp这个用户是用来被映射的,所以这个用户不能登录到ftp
#/etc/init.d/vsftpd restart

九,诡异的问题
配置都正确但是vftpd的虚拟用户就是登录不了;或者可以登录但没有对这个目录下应有的权限。
此时此刻最有可能的罪魁祸首可能是selinux和iptables的问题。
1,iptables防火墙如果开启而ftp端口没有打开的话就不能连接到ftp
关闭防火墙:
#/etc/init.d/iptables stop
2,selinux如果没有关闭,它内置的一些规则就会让你的虚拟ftp用户服务器登录或者获得相应的
权限
关闭selinux:
#setenforce 0

十,补充:
1,虚拟用户的根目录如果在虚拟用户的配置文件中如果没有定义(local_root= ) 那么默认的根目录
就会被被映射为本地用户的根目录(之前建的vuser_ftp);所以虚拟用户要在这个目录中有权限
的话必须先开启,就是说被映射的这个本地用户要对这个虚拟用户指定的根目录有相应的权限。
2,这里实验用的是本地用户是vuser_ftp。在实际的配置中可以用httpd这个服务用户来作为被映射的
用户。这样一来整个网站的目录只需要一个用户,很容易做权限控制

vsftpd虚拟用户【公司系统部分享】的更多相关文章

  1. 烂泥:ubuntu下vsftpd虚拟用户配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我微信ilanniweb. 以前搭建vsftpd都是在centos下,本以为在ubuntu按照以前的步骤搭建即可.可 ...

  2. vsftpd虚拟用户创建实例(转载)

    vsftpd虚拟用户创建实例 发布:theboy   来源:net     [大 中 小] vsftpd虚拟用户创建实例,有需要的朋友可以参考下.  vsftpd虚拟用户创建实例,有需要的朋友可以参考 ...

  3. VSFTPD虚拟用户配置

    转载:http://www.cnblogs.com/allenjin/archive/2011/12/03/2274542.html 以下操作验证OK!!!! VSFTPD虚拟用户配置 VSFTP = ...

  4. ubuntu server vsftpd 虚拟用户及目录

    ubuntu server vsftpd 虚拟用户及目录 一:需求场景: 在ubuntu server上开设一个虚拟网站,在网站目录建立一个ftp目录,允许用户通过ftp上传网站文件到网站目录: 同时 ...

  5. vsftpd 虚拟用户配置

    vsftpd 虚拟用户的作用是 通过不同的虚拟用户可以有不同的根目录. 从 2.3.5 版本之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能在具有写权限了,如果检查 ...

  6. Ubuntu 12.04 LTS为例演示vsftpd虚拟用户 的配置

    vsftpd虚拟用户   2012-05-19 15:46:59|  分类: GNU/Linux |  标签:ubuntu  vsftpd  ftp  虚拟用户  |举报|字号 订阅 我们登录FTP有 ...

  7. vsftpd 虚拟用户限定在虚拟用户目录

    1.安装vsftpd yum -y install pam pam-devel db4 db4-tcl vsftpd 2.更名默认配置文件,以便恢复 cp /etc/vsftpd/vsftpd.con ...

  8. FTP服务-实现vsftpd虚拟用户

    前几篇介绍了基础,这篇将具体实现几个案例 实现基于文件验证的vsftpd虚拟用户,每个用户独立一个文件夹 1.创建用户数据库文件 vim /etc/vsftpd/vusers.txt qq cento ...

  9. 实现验证的vsftpd虚拟用户

    实现基于文件验证的vsftpd虚拟用户--(一台) 一.创建用户数据库文件 vim /etc/vsftpd/vuser cd /etc/vsftpd/ db_load -T -t hash -f vu ...

随机推荐

  1. linux 查找并操作

    find -depth 1 -name 'aa*' | xargs tar -cvf aa.tar 这个命令将为查找当前目录下的所有已aa开头的文件,然后将所有结果"执行打包",打 ...

  2. Android Touch事件传递机制具体解释 下

    尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38025165 资源下载:http://download.csdn.net/detail/yu ...

  3. [Android]egit取消文件版本号控制

    开发项目,多人合作开发变得越来越重要了,在此同一时候,使用git作为协同工具也是越来越多.在此.介绍一下egit取消文件版本号控制的方法. (egit即为eclipse中的git插件) 1.打开Nav ...

  4. Backup and Recovery Basics2

    1.6.Automatic Disk-Based Backup and Recovery: The Flash Recovery Area 创建不同备份和恢复文件的组件对每一个文件系统的大小没有不论什 ...

  5. SharePoint 的PowerShell命令之获取所有网站模版

    Get-SPWebTemplate | select Name, Title

  6. 笔记本WIFI卡简介

    1.Intel AC9560(CNVI) AC9260(pcie) 3165D2W(pcie) 2.Realtek瑞昱 RTL8822be(pcie) RTL8723BU(USB) 英特尔在300系主 ...

  7. nodejs初学-----helloworld

    近期紧锣密鼓的学习了下nodejs(之前在学php.算入门了吧,可是时间关系,还没写文章,兴许要搞安卓和大数据,总之比較忙哈,计划上php要排到后面了,还请广大小伙伴不要着急) 先抄一句:Node.j ...

  8. jQuery的Pagenation分页插件。

    插件简介 此jQuery插件为Ajax分页插件,一次性加载,故分页切换时无刷新与延迟,如果数据量较大不建议用此方法,因为加载会比较慢. 原插件CSS不太合理,使用浮动,故无法方便实现左右方向的定位,且 ...

  9. ubantu 彻底卸载mysql

    卸载mysql 第一步 1 sudo apt-get autoremove --purge mysql-server-5.0 2 sudo apt-get remove mysql-server 3 ...

  10. hadoop权威指南学习

    通常情况下,处理少量的大型文件更容易.更有效,为什么呢? map阶段中的键如果不需要可以忽略掉? MapReduce过程也可以用于本地文件的处理,但是如果是要使用到集群的话还需要HDFS. Data ...