让Vsftp支持虚拟用户
vsftpd下(FTP)建立虚拟用户的添加基于Centos系列Linux

本人技术有限,是根据网上搜索修改后这样操作下来的是可以实现的,如有不妥之处望指正---作者:宗国锋---如有转载请著名出处,谢谢系统环境Centos5装包(用rpm包安装也可以)[root@localhost ~]yum -y install vsftpd[root@localhost ~]yum -y install db4-utils#添加虚拟的用户帐户![root@localhost ~]cd /tmp[root@localhost ~]vi ftpuser_listzongguofengguofeng[root@localhost ~]rm -rf /etc/vsftpd_login.db //注释此文件可能不存在,首次建立的时候是不存在的不需要删除[root@localhost ~]# db_load -T -t hash -f /tmp/ftpuser_list /etc/vsftpd_lo gin.db[root@localhost ~]chmod 600 /etc/vsftpd_login.db[root@localhost ~]vi /etc/pam.d/ftp.vuauth required /lib/security/pam_userdb.so db=/etc/vsftpd_loginaccount required /lib/security/pam_userdb.so db=/etc/vsftpd_login#添加本地计算机用户名和密码;[root@localhost ~]useradd -d /ftp -s /sbin/nologin vsftp[root@localhost ~]chown -R vsftp.vsftp /ftp[root@localhost ~]touch /tmp/new_ftppwd[root@localhost ~]echo "vsftp:password" >/tmp/new_ftppwd[root@localhost ~]chpasswd < /tmp/new_ftppwd#配置vsftpd.conf全局设置:[root@localhost ~]cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak.00 然后编辑配置文件写入如下内容直接执行即可![root@localhost ~]echo "anonymous_enable=NOanonymous_enable=NO#本地帐户配置!local_enable=YESlocal_umask=022dirmessage_enable=YESconnect_from_port_20=YES#启用来宾帐号,也就是虚拟用户使用的帐号的权限用户。
RHEL4-FTP服务(五)配置虚拟用户访问vsftp服务_(上)

RHEL4-FTP服务(五)配置虚拟用户访问vsftp服务_(上)VSFTPD采用PAM认证虚拟用户,由于虚拟用户的用户名及口令被单独保存。
因此在验证时,VSFTPD需要用一个系统用户的身份来读取数据据文件或数据库服务器以完成验证。
这就是VSFTPD的guest用户。
这如同匿名用户也需要一个系统用户FTP一样。
我们也可以把gust 用户看成是虚拟用户在系统中的代表。
1、在配置vsftp虚拟用户之前,先让我们来检查两个东西。
其一是使用命令:#rpm -q vsftp确认一下是否已经安装了vsftpd服务,默认系统中是没有安装的,具体的方法请参见:RHEL4- FTP服务(一)vsftpd的安装与启动其二是使用命令#rpm -q db4确认是否安装了Berkeley db,如下图:如果但看上图说明已经安装了Berkeley db,但是在实际的搭建服务的过程中,光有这一项还不行,还得安装两个有关db4的包,才能正常使用。
不然会在配置的过程中出现如下问题:这个包放在RHEL4安装光盘的第三张盘中,如下图所示:安装这两个包,如下图所示:这样就可以把这个问题解决了,这是在网上所有的文档中无法找到的解决方法,只有在亲自的实践过程中才能遇到。
2、下面我们来开始正式配置vsftp虚拟用户(1)、生成虚拟用户的数据库:先使用命令#vi /etc/vsftpd/login.txt在打开的文档中输入内容,在此说明一下这个文档是写入虚拟用户登陆ftp的帐户和密码信息,奇数行是用户名,偶数行是对应的用户密码,如下图所示:‘xdq’为虚拟用户名,‘123’为虚拟用户登陆密码。
注意不能写错行!根据需要写完以后‘wq’保存。
写完文档以后,使用‘db_load’命令生成虚拟用户认证库。
如下图所示:(#说明:‘db_load -T -t hash ’为笔写命令参数,‘-f /etc/vsftpd/login.txt’是指定刚才所建文档login.txt,‘/etc/vsftpd/login.db’是指定生成的虚拟用户库存放的位置并起名字为login.db)(2)、生成一个新的PAM文件,使其指定你上一步生成的虚拟用户认证库。
vsFTPd虚拟用户配置

[root@dyzx ~]# vim /etc/vsftpd/vconfig/ftp //配置文件名与用户名同名
guest_username=ftpuser
//设置ftp对应的本地用户为ftpuser
anon_max_rate=50000
//限定传输速率为50KB/s
[root@dyzx ~]# vim /etc/vsftpd/vconfig/teacher //配置文件名与用户名同名
Preparing...
########################################### [100%]
1:db4-utils
########################################### [100%]
步骤3:使用db_load工具将列表文本文件转化为数据库文件
[root@dyzx ~]# chmod -R 555 /var/ftp/share/
[root@dyzx ~]# chmod -R 777 /var/ftp/teacherdir/
步骤6:建立支持虚拟用户vim /etc/pam.d/vuser.vu //配置文件的名称可以自行定义
max_clients=400
//设置FTP服务器最大接入客户端数为400个(需添加)
max_per_ip=10
//设置每个IP地址最大连接数为10个(需添加)
……
任务12-5 基于虚拟用户访问的FTP配置
• 步骤8:为虚拟用户ftp、techer建立各自独立的配置文件
[root@dyzx ~]# mkdir /etc/vsftpd/vconfig/
[root@dyzx ~]# rpm -ivh /mnt/Server/db4-utils-4.3.29-10.el5.i386.rpm
vsftp虚拟用户配置

1、在/etc/vsftpd/vsftpd.conf加入或者更改以下配置语句:anonymous_enable=NO (当然你也可以设成YES,同时允许匿名用户登陆)local_enable=YES (必须置YES,因为虚拟用户是映射到virtual这个本地用户来访问的)guest_enable=YES(启用虚拟用户)guest_username=virtual(第5步中创建,将虚拟用户映射为本地virtual用户)pam_service_name=vsftpd.vu(第2步中创建,指定PAM配置文件,文件已经在/etc/pam.d/存在)user_config_dir=/etc/vsftpd/user_conf(第7,8步中创建,指定不同虚拟用户配置文件的存放路径)2、在/etc/pam.d/中修改文件vsftpd.vu,对比修改内容:auth required pam_userdb.so db=/etc/vsftpd/vsftpd_loginaccount required pam_userdb.so db=/etc/vsftpd/vsftpd_login3、建立用户列表/tmp/logins.txt 内容如下cph1 (帐号)111111 (用户密码)cph2 (帐号)222222 (用户密码)cph3 (帐号)333333 (用户密码)注意:不要有空行,一行账号一行密码;奇数行为帐号,偶数行为密码4、建立访问者数据文件(如果没有可以安装:yum install db4-utils)#db_load -T -t hash -f /tmp/logins.txt /etc/vsftpd/vsftpd_login.db5、建立本地虚拟用户:#useradd -d /home/vsftp -s /sbin/nologin virtual6、在/home/ftp/创建目录并改变其属性和它的宿主#chown virtual /home/vsftp#chmod 700 /home/vsftp7、创建ftp用户配制文件目录:/etc/vsftpd/user_conf#mkdir /etc/vsftpd/user_conf8、在/etc/vsftpd/user_conf目录中创建以用户名命名的配置文件、cph1、cph2、cph3“cph1”文件内容如下:local_root=/home/ftpanon_world_readable_only=NOwrite_enable=YES (写权限)anon_mkdir_write_enable=YES (新建目录权限)anon_upload_enable=YES(上传权限)anon_other_write_enable=YES(删除/重命名的权限)“cph2”文件内容如下:local_root=/home/ftp (当然,你高兴也可以设置成其它,但要注意virtual用户对此目录的权限)anon_world_readable_only=NO (使download用户的能下载,也只能下载;写成YES,将不能列出文件和目录)“cph3”文件内容如下:local_root=/var/wwwanon_world_readable_only=NOanon_umask=022 (由于web页面的特殊性,故单独设置上传文件权限为755,此掩码值可根据具体情况更改)write_enable=YES (写权限)anon_mkdir_write_enable=YES (新建目录权限)anon_upload_enable=YES(上传权限)anon_other_write_enable=YES(删除/重命名的权限)9、最后,重新启动VSFTPD#/etc/init.d/vsftpd restart注意事项:erdb的pam认证配置文件(pam_userdb.so)最好不要加路径,不然有可能会报错.2.添加allow_writeable_chroot=YES到vsftp.conf使得拥有写权限的虚拟root用户也可以登陆.。
centos6.5vsftpd虚拟用户配置

centos6.5vsftpd虚拟⽤户配置⼀:基本知识1:虚拟⽤户:与系统⽆关联,不能登⼊系统,只能访问FTP服务器2:vsftp的服务进程是vsftpd3:vsftpd的配置⽂件是/etc/vsftpd/vsftpd.conf .4:vsftpd的⽤户⽂件是/etc/vsftpd/ftpusers5:vsftpd的⽤户⽂件是/etc/vsftpd/user_list6:推荐使⽤虚拟⽤户登⼊vs-FTP服务器⼆:安装1.检查是否安装过vsftpdrpm -qa vsftpd安装:(1) yum -y install vsftpd lftp(2) 关闭iptables 和 selinux/etc/init.d/iptables stop临时关闭selinuxsetenforce 0永久性的关闭selinuxvim /etc/selinux/config修改为 ————》SELINUX=disabled(3) 创建虚拟⽤户⽂本⽂件,添加⽤户及密码cd /etc/vsftpdtouch vuser.txt备注:奇数⾏是⽤户名,偶数⾏是密码。
例如:alix123456(4) ⽣成虚拟数据库⽂件(需使⽤到db_load)yum -y install db4-utils db4-devel db4-4.3db-load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db(5) 配置PAM⽂件,⽤来验证客户端vim /etc/pam.d/vsftpdauth required pam_userdb.so db=/etc/vsftpd/vuseraccount required pam_userdb.so db=/etc/vsftpd/vuser(6)修改虚拟数据库⽂件的权限chmod 700 /etc/vsftpd/vuser.db(7) 增加⼀个系统⽤户vuser,⽤于匿名⽤户的映射。
vsftp添加虚拟用户

之前配置的vsftp,为了省事和方便,都是用系统用户。
今天有人找我配置一个采用虚拟用户的系统CU看了看精华帖子,然后照做之,很容易就成功了需要说明的是,如果系统已经安装了rpm,可以直接修改rpm的配置文件rpm的配置文件在/etc/vsftpd/vsftpd.conf如果是tar源码安装,配置文件在/etc/vsftpd.confrpm的可执行文件在/usr/sbin/vsftpdtar的可执行文件在/usr/local/sbin/vsftpd不要在已经安装了rpm的情况下去用tar编译,我就是这么干的,结果弄的我晕死因为默认的PATH搜索路径中,/usr/sbin/ 是比/usr/local/sbin/优先的。
rpm安装很简单,tar安装也很简单,需要做的工作就是修改配置文件如果从源码安装,我们可以打开一些功能# vi builddefs.h \\编辑builddefs.h 文件,文件内容如下:#ifndef VSF_BUILDDEFS_H#define VSF_BUILDDEFS_H#undef VSF_BUILD_TCPWRAPPERS#define VSF_BUILD_PAM#undef VSF_BUILD_SSL把需要的功能前面的undef 改成define,然后编译就可以用了。
tcp_wrappers是一个比较有用的功能,创建必要的帐号,目录:# useradd nobody //可能你的系统已经存在此帐号,那就不用建立# mkdir /usr/share/empty //可能你的系统已经存在此目录,那就不用建立# mkdir /var/ftp //可能你的系统已经存在此目录,那就不用建立# useradd -d /var/ftp ftp //可能你的系统已经存在此帐号,那就不用建立# chown root:root /var/ftp# chmod og-w /var/ftp请记住,如果你不想让用户在本地登陆,那么你需要把他的登陆SHELL 设置成/sbin/nologin,比如以上的nobody和ftp我就设置成/sbin/nologin#make#make install这样就安装完成了。
Linux系统学习十八、VSFTP服务—虚拟用户访问—配置虚拟用户访问

Linux系统学习十八、VSFTP服务—虚拟用户访问—配置虚拟用户访问配置虚拟用户访问首先至少要关闭userlist改完配置文件是要重启服务来使它生效其实在刚装好vsftp的时候的配置文件不用修改的情况下配置虚拟用户访问控制是最好的local_root选项不影响本地用户登录的目录和虚拟用户登录的目录是不产生影响的为防止有影响,把chroot也注释了配置虚拟用户登录的步骤:1、添加虚拟用户口令文件2、生成虚拟用户口令认证文件3、编辑vsftp的PAM认证文件4、建立本地映射用户并设置宿主目录权限5、修改配置文件6、重启vsftp服务,并测试7、调整虚拟用户权限第一步:添加虚拟用户口令文件(该文件可以叫任何名字也可以放在任何位置)vi /etc/vsftpd/vuser.txt #内容如下cangls #用户名123 #密码bols #用户名123 #密码以上的用户名密码并不能直接登录系统,所以不怕截取第二步:生成虚拟用户口令认证文件yum –y install db4-utils #如果没有安装口令认证命令,需要安装db_load –T –t hash –f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db #把文本文档转换为认证的数据库-T:转化-t:指定转换函数-f:指定文件第三步:编辑vsftp的PAM认证文件vi /etc/pam.d/vsftpdauth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuseraccount required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser#注释掉其他行,加入这两行即可#注释其他行,可以禁止本地用户登录,因为本地用户登录时的验证依然依赖这个文件该文件中本身就有一些规则,定义的是本地用户的验证规则在vsftp的配置文件最下面有一行设置,就是pam文件vi中将2~8行添加#号添加修改完成后,重启服务此时本地用户就不能登录了第四步:建立本地映射用户并设置宿主目录权限useradd –d /home/vftproot –s /sbin/nologin vuser #此用户不需要登录,只是映射用户#用户名必须和下一步配置文件中一致chmod 775 /home/vftproot创建完成后的vftproot的权限是700,这种权限下是不允许用户上传的,需要改权限为755第五步:修改配置文件vi /etc/vsftpd/vsftpd.confguest_enable=YES #开启虚拟用户guest_username=vuser #FTP虚拟用户对应的系统用户(用户名要和前面的名字一样)pam_service_name=vsftpd #PAM认证文件(默认存在)第六步:重启vsftpd服务并测试service vsftpd restart此时虚拟用户可以登录,查看、下载,不能上传默认上传文件的位置是宿主用户的家目录权限使用的是匿名用户权限进行管理注:正常情况下,此时就可以用前面设置的两个虚拟用户登录ftp 了,但是我这里是登陆失败,还没找的是哪里出错了,下面我重新恢复虚拟机,重头再来。
suse系统vsftpd虚拟用户配置手册

Suse linux 11建立Vsftpd虚拟用户我们登录FTP有三种方式,匿名登录、本地用户登录和虚拟用户登录。
匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous。
本地用户登录:使用系统用户登录,在/etc/passwd中。
虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器。
FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大增强了系统的安全。
本文实验的Linux系统是SuseLinux一、本地数据文件方式1. 添加虚拟用户口令文件[root@SuseLinux /]#mkdir /etc/vsftpd[root@SuseLinux /]#vi /etc/vsftpd/vftpuser.txt添加虚拟用户名和密码,一行用户名,一行密码,以此类推。
奇数行为用户名,偶数行为密码。
ipmsIPms!23$xdrdownloadXdrd!23$2. 生成虚拟用户口令认证文件将刚添加的vftpuser.txt虚拟用户口令文件转换成系统识别的口令认证文件。
首先查看系统有没有安装生成口令认证文件所需的软件db4-utils。
[root@SuseLinux /]#rpm –qa |grep db4-utils[root@SuseLinux /]#rpm –ivh db4-utils-4.3.29-9.fc6.i386.rpm下面使用db_load命令生成虚拟用户口令认证文件。
[root@SuseLinux /]#db_load –T –t hash –f /etc/vsftpd/vftpuser.txt/etc/vsftpd/vftpuser.db3. 编辑vsftpd的PAM认证文件在/etc/pam.d目录下,[root@SuseLinux /]#cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_20160303bak [root@SuseLinux /]#vi /etc/pam.d/vsftpd将里面其他的都注释掉,添加下面这两行(注意系统是32位还是64位的):auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser4. 建立本地映射用户并设置宿主目录权限所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
让Vsftp支持虚拟用户很早就想写出这份内容了,由于最近事情实在太多一直迟迟拖到现在才写完,心里也终于舒了口气。
之前在第8话就写过一篇关于Vsftpd的基础配置,今天也写一篇稍微高级点的Vsftpd配置心得和全部过程详解。
还记得不久之前还写过一篇通过Radius来对应用程序用户进行验证,这样一方面方便了应用程序用户多服务的整合,另一方面也大大减少了应用程序用户与系统用户的关联性,在其中PAM扮演了重要的角色,也通过那次的经历,使我切实感受到了PAM的灵活性。
在这里,Vsftp的虚拟用户支持,也就是说,这些Vsftp用户不再必须是系统用户了,而且用户路径的定义、配置可以更加个性化,从而使得Vsftp也更加功能强大。
而在这当中,PAM再次扮演了关键的角色。
环境:CentOS 5.0操作系统一.安装:1.安装Vsftpd服务相关部件:[root@KcentOS5~]#yum install vsftpd*Dependencies Resolved=============================================================================Package Arch Version Repository Size=============================================================================Installing:vsftpd i386 2.0.5-10.el5base137kTransaction Summary=============================================================================Install1Package(s)Update0Package(s)Remove0Package(s)2.确认安装PAM服务相关部件:[root@KcentOS5~]#yum install pam*Dependencies Resolved=============================================================================Package Arch Version Repository Size=============================================================================Installing:pam-devel i3860.99.6.2-3.14.el5base186kTransaction Summary=============================================================================Install1Package(s)Update0Package(s)Remove0Package(s)开发包,其实不装也没有关系,主要的目的是确认PAM。
3.安装DB4部件包:这里要特别安装一个db4的包,用来支持文件数据库。
[root@KcentOS5~]#yum install db4*Dependencies Resolved=============================================================================Package Arch Version Repository Size=============================================================================Installing:db4-devel i386 4.3.29-9.fc6base 2.0Mdb4-java i386 4.3.29-9.fc6base 1.7Mdb4-tcl i386 4.3.29-9.fc6base 1.0Mdb4-utils i386 4.3.29-9.fc6base119kTransaction Summary=============================================================================Install4Package(s)Update0Package(s)Remove0Package(s)二.系统帐户1.建立Vsftpd服务的宿主用户:[root@KcentOS5~]#useradd vsftpd-s/sbin/nologin默认的Vsftpd的服务宿主用户是root,但是这不符合安全性的需要。
这里建立名字为vsftpd的用户,用他来作为支持Vsftpd的服务宿主用户。
由于该用户仅用来支持Vsftpd服务用,因此没有许可他登陆系统的必要,并设定他为不能登陆系统的用户。
2.建立Vsftpd虚拟宿主用户:[root@KcentOS5nowhere]#useradd overlord-s/sbin/nologin本篇主要是介绍Vsftp的虚拟用户,虚拟用户并不是系统用户,也就是说这些FTP的用户在系统中是不存在的。
他们的总体权限其实是集中寄托在一个在系统中的某一个用户身上的,所谓Vsftpd的虚拟宿主用户,就是这样一个支持着所有虚拟用户的宿主用户。
由于他支撑了FTP的所有虚拟的用户,那么他本身的权限将会影响着这些虚拟的用户,因此,处于安全性的考虑,也要非分注意对该用户的权限的控制,该用户也绝对没有登陆系统的必要,这里也设定他为不能登陆系统的用户。
(这里插一句:原本在建立上面两个用户的时候,想连用户主路径也不打算给的。
本来想加上-d /home/nowhere的,据man useradd手册上讲述:“-d,--home HOME_DIRThe new user will be created using HOME_DIR as the value for theuser鈙login directory.The default is to append the LOGIN name toBASE_DIR and use that as the login directory name.The directoryHOME_DIR does not have to exist but will not be created if it ismissing.使用-d参数指定用户的主目录,用户主目录并不是必须存在的。
如果没有存在指定的目录的话,那么它将不会被建立”。
结果我尝试-d/home/nowhere指定到一个并不存在的目录的时候,我KAO!竟然给我自己新建了一个==#)三.调整Vsftpd的配置文件:1.编辑配置文件前先备份[root@KcentOS5~]#cp/etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd.conf.backup2.编辑主配置文件Vsftpd.conf[root@KcentOS5~]#vi/etc/vsftpd/vsftpd.conf这里我将原配置文件的修改完全记录,凡是修改的地方我都会保留注释原来的配置。
其中加入我对每条配置项的认识,对于一些比较关键的配置项这里我做了我的观点,并且原本英语的说明我也不删除,供参考对比用。
------------------------------------------------------------------------------#Example config file/etc/vsftpd/vsftpd.conf##The default compiled in settings are fairly paranoid.This sample file#loosens things up a bit,to make the ftp daemon more usable.#Please see vsftpd.conf.5for all compiled in defaults.##READ THIS:This example file is NOT an exhaustive list of vsftpd options.#Please read the vsftpd.conf.5manual page to get a full idea of vsftpd's#capabilities.##Allow anonymous FTP?(Beware-allowed by default if you comment this out).#anonymous_enable=YESanonymous_enable=NO设定不允许匿名访问##Uncomment this to allow local users to log in.local_enable=YES设定本地用户可以访问。
注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
##Uncomment this to enable any form of FTP write command.write_enable=YES设定可以进行写操作。
##Default umask for local users is077.You may wish to change this to022,#if your users expect that(022is used by most other ftpd's)local_umask=022设定上传后文件的权限掩码。
##Uncomment this to allow the anonymous FTP user to upload files.This only#has an effect if the above global write enable is activated.Also,you will#obviously need to create a directory writable by the FTP user.#anon_upload_enable=YESanon_upload_enable=NO禁止匿名用户上传。
##Uncomment this if you want the anonymous FTP user to be able to create#new directories.#anon_mkdir_write_enable=YESanon_mkdir_write_enable=NO禁止匿名用户建立目录。