vsftp虚拟用户配置
- 格式:doc
- 大小:52.50 KB
- 文档页数:13
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文件,使其指定你上一步生成的虚拟用户认证库。
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虚拟⽤户配置⼀:基本知识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,⽤于匿名⽤户的映射。
Linux(Centos)配置vsftp使⽤账号密码(虚拟⽤户)登录ftp进⾏⽂件上传和修改安装vsftpyum install vsftpd -y安装完成之后进⼊vsftp的配置⽂件夹cd /etc/vsftpd/⽂件夹内容如下[root@VM-0-12-centos vsftpd]# lltotal 20-rw------- 1 root root 125 Oct 1400:10 ftpusers-rw------- 1 root root 361 Oct 1400:10 user_list-rw------- 1 root root 5116 Oct 1400:10 vsftpd.conf-rwxr--r-- 1 root root 338 Oct 1400:10 vsftpd_conf_migrate.sh在当前⽬录下创建⼀个⽤户名和密码的⽂件⽂件名名称为 ftp_user.txtvim /etc/vsftpd/ftp_user.txt再ftp_user.txt⽂件⾥配置⽤户和密码yvioo123456kaifa12345678其中yvioo 是ftp登录的⽤户名123456 是ftp中yvioo⽤户登录的密码kaifa 是ftp登录的⽤户名12345678 是ftp中kaifa⽤户登录的密码以此内推,可以添加多个然后保存退出wq!执⾏命令⽣成虚拟数据库db_load -T -t hash -f /etc/vsftpd/ftp_user.txt /etc/vsftpd/ftp_login.db其中/etc/vsftpd/ftp_user.txt 是上⾯存放⽤户名和密码⽂件的绝对路径/etc/vsftpd/ftp_login.db 这个是⽣成的数据库的路径数据库名称为 ftp_login.db设置⽣成的数据库的访问权限chmod 777 /etc/vsftpd/ftp_login.db编辑账号的pam验证⽂件vim /etc/pam.d/vsftpd在最上⽅增加auth sufficient pam_userdb.so db=/etc/vsftpd/ftp_loginaccount sufficient pam_userdb.so db=/etc/vsftpd/ftp_login其中db=/etc/vsftpd/ftp_login 这个就是上⼀步⽣成的虚拟数据库(⽂件名称根据⾃⼰的来),注意:这⾥不⽤加 .db 后缀如下图所⽰创建⼀个⽂件夹mkdir /home/vsftpd新建⼀个系统⽤户vsftpd⽤户登录终端设为/bin/false(即不能登录系统)useradd vsftpd -d /home/vsftpd -s /bin/false其中vsftpd 这个就是创建的⽤户的⽤户名(这个下⾯配置⽂件⾥会使⽤)/home/vsftpd 就是刚才创建的⽂件夹根据需要创建修改/etc/vsftpd/vsftpd.conf,以下设置vim /etc/vsftpd/vsftpd.conf修改配置#禁⽤匿名登⼊anonymous_enable=YES 改为 anonymous_enable=NO#监听为专⽤模式listen=NO 改为 listen=YES#将ipv6监听注释掉listen_ipv6=YES 改为 #listen_ipv6=YES在配置⽂件底部增加#对⽤户访问只限制在主⽬录不能访问其他⽬录(这个已经有了但是默认是注释的可以取消注释或者直接新增)chroot_local_user=YES#启⽤guestguest_enable=YES#使⽤虚拟账号形式(vsftpd 就是我们上⾯创建的⽤户的⽤户名)guest_username=vsftpd#虚拟账号配置⽬录(这个还没创建我们下⾯再进⾏创建,先这样写)user_config_dir=/etc/vsftpd/user_conf#对vsftpd的⽤户使⽤pam认证(这个就是我们上⾯改的pam验证⽂件的⽂件名,这个默认已经有了,所以不⽤添加,没有的话再添加)pam_service_name=vsftpd#允许本地⽤户登录(这个默认的也有了,没有的话添加上)local_enable=YES然后保存退出接着创建虚拟账号配置⽬录mkdir /etc/vsftpd/user_conf进⼊⽂件夹cd /etc/vsftpd/user_conf/创建⽂件vim /etc/vsftpd/user_config/yvioo其中yvioo 就是我们上⾯ftp_user.txt中配置的ftp的账号的⽤户名(这⾥创建的⽂件名要对应上,如果有多个ftp⽤户就创建多个ftp⽂件对应的⽤户名⽂件,然后在⾥⾯设置权限即可)然后添加write_enable=YESanon_world_readable_only=NOanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESlocal_root=/data/www说明如下#是否允许登陆⽤户有写权限。
之前配置的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服务—虚拟用户访问—配置虚拟用户访问配置虚拟用户访问首先至少要关闭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 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虚拟用户需要使用一个系统用户,这个系统用户不需要密码。
vsftpd虚拟用户配置详细介绍,希望对大家有所帮助。
yum -y install vs ftp d*yum -y install db4*============================================================================先建立一个包含虚拟用户名及其口令的文本文件 , 然后在此基础上生成虚拟用户口令库文件 :#vim logins.txt添加以下信息 ( 单数行为用户名 , 偶数行为口令 ) :123 // 用户名456 // 密码:wq // 保存并退出==================================================================================db_load -T -t h as h -f logins.txt /etc/vsftpd_login.dbchmod 600 /etc/vsftpd_login.db=============================================================================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==============================================================================建立虚拟用户访问目录并设置 virtual 用户访问的权限#useradd -d /var/ftp/share -s /sbin/nologin virtual#chmod 700 /var/ftp/share=================================================================================================== ==vim /etc/vsftpd/vsftpd.conf 在最下面添加chroot_local_user=YESguest_enable=YESguest_username=virtualpam_service_name=ftp.vuuser_config_dir=/etc/vsftpd_user_conf================================================================================================== 建立 user_config_dir 文件目录,并创建以用户名命名的配置文件#mkdir /etc/vsftpd/user_config_dir#vi /etc/vsftpd/user_config_dir/1anon_world_readable_only=NO # 浏览权限anon_upload_enable=YES #?write_enable=YES # 上传权限download_enable=YES # 下载权限anon_other_write_enable=YES # 删除权限anon_mkdir_write_enable=YES # 建立文件夹权限local_root=/var/ftp/share/123 # 指定用户登陆的默认路径其他账户配置依以上参数并根据需要设定 ..=============================================================== vim /etc/vsftpd_user_conf/123anon_world_readable_only=NOanon_upload_enable=YESwrite_enable=YESdownload_enable=YESanon_other_write_enable=YESanon_mkdir_write_enable=YESlocal_root=/var/ftp/share/123mkdir -p /var/ftp/share/123================================================每当在创建一个虚拟用户的步骤1 修改一下vim logins.txt 添加用户和密码2 在生成数据库db_load -T -t hash -f logins.txt /etc/vsftpd_login.dbchmod 600 /etc/vsftpd_login.db3在针对每个虚拟用户名设置不同的权限cp -p /etc/vsftpd_user_conf/123 /etc/vsftpd_user_conf/7894 设置 vim /etc/vsftpd_user_conf/789用户的权限anon_world_readable_only=NOanon_upload_enable=YESwrite_enable=YESdownload_enable=YESanon_other_write_enable=YESanon_mkdir_write_enable=YESlocal_root=/var/ftp/share/789======================================================= mkdir -p /var/ftp/share/789chown -R virtual.virtual /var/ftp/share。
VSFTPD配置(匿名——本地⽤户——虚拟⽤户)1,下载VSFTPD.TAR.GZ程序下载地址:ftp:///users/cevans/2,检查和建⽴相应账户和⽬录1,nobody⽤户[root@main vsftpd-2.1.0]# cat /etc/passwd |grep nobodynobody:x:99:99:Nobody:/:/sbin/nologin如不存在请建⽴相关账户。
2,/usr/share/empty ⽬录,如不存在请创建3,如允许匿名访问,需创建Ftp⽤户,家⽬录为/var/ftp(⼀般ftp⽤户存在⽽家⽬录不存在)[root@main vsftpd-2.1.0]# mkdir /var/ftp/[root@main vsftpd-2.1.0]# chown root.root /var/ftp[root@main vsftpd-2.1.0]# chmod 755 /var/ftp3,解压、编译、安装程序(其实vsftpd⽤rpm和⽤源码安装差不多,编译安装反⽽不⽅便,推荐各位RPM安装,呵呵)[root@main ~]# tar xzfv vsftpd-2.1.0.tar.gz[root@main ~]# cd vsftpd-2.1.0[root@main vsftpd-2.1.0]# make && make install4,复制相关⽂件如果是⽤RPM安装,可能会和源码安装的⽂件路径略有不同,如/etc/vsftpd.conf变成了/etc/vsftpd/vsftpd.conf,这类变动请⾃⾏ find相关⽂件。
主配置⽂件[root@main vsftpd-2.1.0]# cp vsftpd.conf /etc/vsftpd.confPAM⾝份验证⽤⽂件[root@main vsftpd-2.1.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp5,配置vsftpd.conf启⽤/禁⽌匿名⽤户访问。
Vsftpd 虚拟用户与目录的建立和设置vsftpd 的虚拟用户采用了不与系统账户口令文件合二为一的方法,也就是说,为了认证这些虚拟用户vsftpd 使用单独的口令库文件(pam_userdb),由可插拔认证模块(PAM)进行认证。
使用这种方式更加安全,并且配置更灵活。
配置简单的虚拟用户FTP 服务器1、生成虚拟用户口令库文件2、配置生成vsftpd 的认证文件3、建立虚拟用户所要访问的目录并设置相应权限4、建立配置文件//生成虚拟用户口令库文件,为了建立此口令库文件,先要生成一个文本文件下面我们开始完成建立一个虚拟用户的步骤:用户:xinlisn密码:123456第一步:建立虚拟用户名和密码对应的文本文件,logins.txt 放在/home/ftp 服务弄好以后记得删除这个文件,为了安全xinlisn123456此文本文件的格式是:单数行为用户名,偶数行为口令,即:用户xinlisn的口令为123456第二步:下面使用db_load 命令生成口令库文件,需要安装db4-utils-4.2.52-7.1.i386.rpmdb_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.dbchmod 600 /etc/vsftpd_login.db第三步:给虚拟用户创建目录mkdir /home/snuser/ftpchmod 700 /home/snuser/ftp第四步:-s是让其不能登陆系统,-d 是指定用户目录为/home/snuser/ftpuseradd –s /sbin/nologin –d /home/snuser/ftp ftpuser第五步:编辑生成虚拟用户所需的PAM 配置文件vi /etc/pam.d/vsftpd插入如下两行auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login account required /lib/security/pam_userdb.so db=/etc/vsftpd_login第六步:生成主配置文件 vsftpd.conf,也就是虚拟用户启动所需要的配置文件,不是执行 service vsftpd starts 所默认执行的 /ect/vsftpd/vsftpd.conf 的配置文件,把它放在/etc/vsftpd.confJava代码1.# Example config file /etc/vsftpd/vsftpd.conf2.#3.# The default compiled in settings are fairly paranoid. This sample file4.# loosens things up a bit, to make the ftp daemon more usable.5.# Please see vsftpd.conf.5 for all compiled in defaults.6.#7.# READ THIS: This example file is NOT an exhaustive list of vsftpd options.8.# Please read the vsftpd.conf.5 manual page to get a full ideaof vsftpd's9.# capabilities.10.#11.# Allow anonymous FTP? (Beware - allowed by default if you comment this out)12.#禁止匿名登录13.anonymous_enable=NO14.#15.# Uncomment this to allow local users to log in.16.#接受本地用户17.local_enable=YES18.#19.# Uncomment this to enable any form of FTP write command.20.#可以上传(全局控制)21.write_enable=YES22.#23.# Default umask for local users is 077. You may wish to change this to 022,24.# if your users expect that (022 is used by most other ftpd's)25.#local_umask=00226.#27.# Uncomment this to allow the anonymous FTP user to upload files. This only28.# has an effect if the above global write enable is activated. Also, you will29.# obviously need to create a directory writable by the FTP user.30.#允许上传31.anon_upload_enable=YES32.#33.# Uncomment this if you want the anonymous FTP user to be able to create34.# new directories.35.#anon_mkdir_write_enable=YES36.#37.# Activate directory messages - messages given to remote users when they38.# go into a certain directory.39.#允许为目录配置显示信息,显示每个目录下面的message_file文件的内容40.dirmessage_enable=YES41.#42.# Activate logging of uploads/downloads.43.#开启日记功能44.xferlog_enable=YES45.#46.# Make sure PORT transfer connections originate from port 20(ftp-data).47.#connect_from_port_20=YES48.#49.# If you want, you can arrange for uploaded anonymous files to be owned by50.# a different user. Note! Using "root" for uploaded files isnot51.# recommended!52.#chown_uploads=YES53.#chown_username=whoever54.#55.# You may override where the log file goes if you like. The default is shown56.# below.57.#日志文件位置58.xferlog_file=/var/log/vsftpd.log59.#60.# If you want, you can have your log file in standard ftpd xferlog format61.#使用标准格式62.xferlog_std_format=YES63.#64.# You may change the default value for timing out an idle session.65.#空闲连接超时66.idle_session_timeout=60067.#68.# You may change the default value for timing out a data connection.69.#数据连接超时70.data_connection_timeout=60071.#72.# It is recommended that you define on your system a unique user which the73.# ftp server can use as a totally isolated and unprivileged user.74.#nopriv_user=ftpsecure75.#76.# Enable this and the server will recognise asynchronous ABORrequests. Not77.# recommended for security (the code is non-trivial). Not enabling it,78.# however, may confuse older FTP clients.79.#async_abor_enable=YES80.#81.# By default the server will pretend to allow ASCII mode butin fact ignore82.# the request. Turn on the below options to have the server actually do ASCII83.# mangling on files when in ASCII mode.84.# Beware that turning on ascii_download_enable enables malicious remote parties85.# to consume your I/O resources, by issuing the command "SIZE/big/file" in86.# ASCII mode.87.# These ASCII options are split into upload and download because you may wish88.# to enable ASCII uploads (to prevent uploaded scripts etc. from breaking),89.# without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be90.# on the client anyway..91.#ascii_upload_enable=YES92.ascii_download_enable=YES93.#94.# You may fully customise the login banner string:95.#ftpd_banner=Welcome to blah FTP service.96.#97.# You may specify a file of disallowed anonymous e-mail addresses. Apparently98.# useful for combatting certain DoS attacks.99.#deny_email_enable=YES100.# (default follows)101.#banned_email_file=/etc/vsftpd.banned_emails102.#103.# You may specify an explicit list of local users to chroo t() to their home104.# directory. If chroot_local_user is YES, then this list b ecomes a list of105.# users to NOT chroot().106.#chroot_list_enable=YES107.# (default follows)108.#chroot_list_file=/etc/vsftpd.chroot_list109.#110.# You may activate the "-R" option to the builtin ls. This is disabled by111.# default to avoid remote users being able to cause excess ive I/O on large112.# sites. However, some broken FTP clients such as "ncftp"and "mirror" assume113.# the presence of the "-R" option, so there is a strong ca se for enabling it.114.#ls_recurse_enable=YES115.#定义PAM 所使用的名称,预设为vsftpd116.#pam_service_name=vsftpd117.#若启用此选项,userlist_deny选项才被启动erlist_enable=YES119.anon_umask=000120.#enable for standalone mode121.#绑定到listen_port指定的端口122.listen=YES123.#开启tcp_wrappers支持124.tcp_wrappers=YES125.126.guest_enable=YES127.pam_service_name=ftp.vu128.guest_username=ftpuser129.pasv_enable=YES130.#virtual_use_local_privs=YES131.pasv_enable=YES132.pasv_min_port=30000133.pasv_max_port=30999134.#是否能使用ls -R命令以防止浪费大量的服务器资源135.ls_recurse_enable=YES136.#允许删除137.anon_other_write_enable=YES特别注意: anon_umask=000理解umask:umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。
1)安装配置yum源:1 mkdir /mnt/cdrom2 mount /dev/cdrom /mnt/cdrom3 修改/etc/yum.repos.d/CentOS-Media.repo 内容如下:Baseurl=file:///mnt/cdromGpgcheck=1Enabled=1Gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-51 安装vsftpd命令:yum –y install vsftpd*#执行命令之后,会需要你确定安装的程序,输入Y回车就OK2 安装DB4部件包命令:yum –y install db4*#执行命令之后,会需要你确定安装的程序,输入Y回车就OK 2) 建立系统帐号1 建立Vsftpd服务的宿主用户命令:useradd vsftpd -s /sbin/nologin注:默认的vsftpd的服务宿主用户是root,这是不符合安全性需要的。
这里建立名为vsftpd的用户,用他来作为支持vsftpd的服务宿主用户。
所以该用户没有许可他登陆系统的必要,设定他为不能登陆系统的用户。
2 建立Vsftpd虚拟宿主用户命令:useradd virtual -s /sbin/nologin3 chmod 700 /home/virtual注:虚拟宿主用户:虚拟宿主用户并不是系统用户,他们的总体权限其实是集中寄托在一个在系统中的某一个用户身上的,所谓Vsftpd的虚拟宿主用户,就是这样一个支持着所有虚拟用户的宿主用户。
由于他支撑了FTP的所有虚拟的用户,那么他本身的权限将会影响着这些虚拟的用户,因此,处于安全性的考虑,也要非常注意对该用户的权限的控制,该用户也绝对没有登陆系统的必要,这里也设定他为不能登陆系统的用户。
3) 配置vsftpd的配置文件1 修改vsftpd主配置文件首先备份配置文件:命令:cp /etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd.conf.backup编辑配置文件vsftpd.conf命令:vim /etc/vsftpd/vsftpd.conf因为配置文件内容比较多,所以,我这里就把我的配置帖出来,里面有我后面添加的一些注释,可以对照修改,也可以复制,不过,因为中文注释是后面加的,不知道有没有漏掉#号的地方,如果有问题,可以把中文注释的行删除。
##anonymous_enable=YES#设定不允许匿名访问anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022##anon_upload_enable=YES#禁止匿名用户上传。
anon_upload_enable=NO##anon_mkdir_write_enable=YES #禁止匿名用户建立目录。
anon_mkdir_write_enable=NO dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YES##chown_uploads=YES#设定禁止上传文件更改宿主。
chown_uploads=NO#chown_username=whoeverxferlog_std_format=YES/etc/logrotate.d/vsftpd.log##xferlog_file=/var/log/xferlog#设定日志文件保存路径#####该文件默认不存在。
必须要手动touch出来,并且要使宿主用户vsftpd可以操作该文件xferlog_file=/var/log/vsftpd.logxferlog_std_format=YES#idle_session_timeout=600#data_connection_timeout=120#设定vsftpd服务的宿主用户为vsftpd用户。
nopriv_user=vsftpd##async_abor_enable=YES#设定支持异步传输功能。
async_abor_enable=YES#设定支持ASCII模式的上传和下载功能。
ascii_upload_enable=YESascii_download_enable=YESftpd_banner=Welcome to blah FTP service.#deny_email_enable=YES#chroot_local_user=YES##chroot_list_enable=YES#禁止用户离开自己的FTP主目录。
chroot_list_enable=NO# (default follows)#chroot_list_file=/etc/vsftpd/chroot_list##ls_recurse_enable=YES#禁止用户登陆FTP后使用"ls -R"的命令,这里说明一下,ls -R 会大量消耗系统资源。
所以这里不给操作功能ls_recurse_enable=NOlisten=YES#listen_ipv6=YES#设定PAM服务下vsftpd的验证配置文件名。
PAM验证将参考/etc/pam.d/下的vsftpd文件配置。
pam_service_name=vsftpduserlist_enable=YES#设定支持TCP Wrapperstcp_wrappers=YESguest_enable=YES##指定虚拟用户的宿主用户。
guest_username=virtual##设定虚拟用户的权限符合他们的宿主用户。
virtual_use_local_privs=YES##设定虚拟用户个人Vsftp的配置文件存放路径user_config_dir=/etc/vsftpd/vconf修改完成之后,保存退__________出。
4) 建立日志文件1 新建文件命令:touch /var/log/vsftpd.log2 修改权限命令:chown vsftpd.vsftpd /var/log/vsftpd.log5) 建立虚拟用户配置文件存放目录命令:mkdir /etc/vsftpd/vconf/6) 建立虚拟用户数据库文件1 先建立虚拟用户名单命令:touch /etc/vsftpd/virtusers注:这个文件只是临时保存在这里2 编辑虚拟用户名单文件命令:vi /etc/vsftpd/virtusers在文件中添加以下内容TestUser1Password1TestUser2Password2TestUser3Password3TestUser4Password4注:在其中加入虚拟用户的用户名和口令信息的格式很简单:“一行用户名,一行口令”。
3 生成虚拟用户数据文件命令:db_load -T -t hash -f /etc/vsftpd/virtusers/etc/vsftpd/virtusers.db注:解释一下这个命令db_load命令的-T选项允许应用程序能够将文本文件转译载入进数据库。
子选项-t,追加在在-T选项后,用来指定转译载入的数据库类型。
(-t可以指定的数据类型有Btree、Hash、Queue和Recon数据库。
这里,接下来我们需要指定的是Hash型。
)(生成完之后,ls -alh 看下有没有virtusers.db)7) 修改PAM验证文件,并指定虚拟用户数据库文件进行读取1 备份配置文件:命令:cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup2 编辑Vsftpd的PAM验证配置文件命令:vi /etc/pam.d/vsftpd.vuauth required /lib/security/pam_userdb.sodb=/etc/vsftpd/virtusersaccount required /lib/security/pam_userdb.sodb=/etc/vsftpd/virtusers这块的设置:第一行是验证用户名和口令,第二行是验证权限,sufficient表示一旦在这里通过了本验证,那么也就不用经过下面的验证步骤。
相反,就要进行下面的验证,pam_userdb.so表示审核步骤调用pam_userdb.so这个库函数进行验证,db为调用的数据库文件8) 虚拟用户的配置首先,选一个目录做为虚拟用户的主目录,我这里选择的是/opt/vsftp1 建立虚拟用户主目录命令: mkdir /opt/vsftp/2 建立个虚拟用户的主目录命令: mkdir /opt/vsftp/TestUser1mkdir /opt/vsftp/TestUser2……3 修改目录权限命令:chown -R virtual.virtual /opt/vsftp/4 建立虚拟用户配置文件建立虚拟用户配置文件模板:命令: touch /etc/vsftpd/vconf/vconf.tmp修改虚拟用户配置文件模板:命令: vi /etc/vsftpd/vconf/vconf.tmp添加以下内容:----------------------------------------------------- #指定虚拟用户的具体主路径。
local_root=/opt/vsftp/virtuser#设定不允许匿名用户访问。
anonymous_enable=NO#设定允许写操作。
write_enable=YES#设定不允许匿名用户上传。
anon_upload_enable=NO#设定不允许匿名用户建立目录。
anon_mkdir_write_enable=NO设定修改权限,包括删除文件及文件夹等。
anon_other_write_enable=NO/YES#设定空闲连接超时时间。
idle_session_timeout=600#设定单次连续传输最大时间。
data_connection_timeout=120#设定并发客户端访问个数。
max_clients=50#设定单个客户端的最大线程数,max_per_ip=20#设定该用户的最大传输速率,单位b/s。
我这里给的是500M,这个值跟据不同条件来修改local_max_rate=4194304000----------------------------------------------------- 以上内容的值是可以调整的,主要是对用户的信息连接以及操作,进行控制5 对不同的用户进行订制复制虚拟用户模版配置文件命令:cp /etc/vsftpd/vconf/vconf.tmpetc/vsftpd/vconf/TestUser1针对具体用户进行定制,修改订制文件命令:vi /etc/vsftpd/vconf/TestUser1(我这里只修改了主目录,)local_root=/opt/vsftp/TestUser1保存并退出,然后重复以上操作,对每个虚拟用户进行配置9) 重启vsftpd服务命令:service vsftpd restart10) 测试在客户端cmd命令行下执行ftp 192.168.1.206输入口令回车然后输入密码(输入密码的时候,命令行不会显示,直接输入回车就OK)接着就可以测试一下上传和下载上传命令:put 文件名下载命令:get 文件名也可以通过FlashFXP来操作,这里就不多说了3、碰到的问题我这里只遇到了一个问题,就是上传和下载的时候,报了一个上传失败553 Could not create fileGoogle之,得到的答案是,因为目录权限的问题,可是我的目录权限已经修改了,所以继续Google后来看一有文章写通过setsebool -P ftpd_disable_trans 1命令来解决,但是这里执行失败报以下错误:libsemanage.dbase_llist_set: record not found in the databaselibsemanage.dbase_llist_set: could not set record value Could not change boolean ftpd_disable_transCould not change policy booleans貌似是说:没有ftpd_disable_trans这个项目继续Google后来找到了真正的解决办法:执行以下命令:getsebool -a|grep ftp得到以下内容:——————————————————allow_ftpd_anon_write --> offallow_ftpd_full_access --> offallow_ftpd_use_cifs --> offallow_ftpd_use_nfs --> offftp_home_dir --> offftpd_connect_db --> offftpd_use_passive_mode --> offhttpd_enable_ftp_server --> offtftp_anon_write --> off ——————————————————因为seLinux这两项是关闭状态。