一,安装相关工具包
#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. java 格式化json字符串

    须要下载:gson-2.2.4.jar

  2. vue DOM模板解析

    当使用 DOM 作为模板时 (例如,使用 el 选项来把 Vue 实例挂载到一个已有内容的元素上),你会受到 HTML 本身的一些限制,因为 Vue 只有在浏览器解析.规范化模板之后才能获取其内容.尤 ...

  3. JSBridge深度剖析

    概述 做过混合开发的人都知道Ionic和PhoneGap之类的框架,这些框架在web基础上包装一层Native.然后通过Bridge技术的js调用本地的库. 在讲JSBridge技术之前.我们来看一下 ...

  4. Node.js 把抓取到的电影节目列表单发或者群发到QQ邮箱

    代码地址如下:http://www.demodashi.com/demo/12381.html 一.前言 上一节我们演示了如何用Node的各种包去抓取电影天堂最新电影列表,接下来我们会讲解如何发送我们 ...

  5. 算法 Heap sort

    // ------------------------------------------------------------------------------------------------- ...

  6. 【Android应用开发详解】实现第三方授权登录、分享以及获取用户资料

      由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo.实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相 ...

  7. iOS中 扫描二维码/生成二维码具体解释 韩俊强的博客

    近期大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 指示根视图: se ...

  8. scikit-learn(project中用的相对较多的模型介绍):2.3. Clustering(可用于特征的无监督降维)

    參考:http://scikit-learn.org/stable/modules/clustering.html 在实际项目中,我们真的非常少用到那些简单的模型,比方LR.kNN.NB等.尽管经典, ...

  9. Chrome自带恐龙小游戏的源码研究(四)

    在上一篇<Chrome自带恐龙小游戏的源码研究(三)>中实现了让游戏昼夜交替,这一篇主要研究如何绘制障碍物. 障碍物有两种:仙人掌和翼龙.仙人掌有大小两种类型,可以同时并列多个:翼龙按高. ...

  10. 【Python】IDLE启动错误

    启动IDLE时报Subprocess Startup Error错误 错误信息 IDLE's subprocess didn't make connection.Either IDLE cant't ...