CentOS6.4_X64安装配置vsFTP-2.2.2 一、环境 : CentOS6.4_X64 Vsftpd-2.2.2 二、安装软件及依赖软件包 1、一般pam和db4默认系统已经安装,如果没有安装如下一并安装吧 #rpm –qa pam #rpm –qa db4 ///检测是否安装 #yum install vsftpd pam db4 -y ///安装所需软件 2、将vsftp配置为系统服务 3、安装完成后生成如下配置文件: [root@localhost vsftpd]# ll /etc/vsftpd/ -rw-------. 1 root root 125 Feb 192013 ftpusers -rw-------. 1 root root 361 Feb 192013 user_list -rw-r--r--. 1 root root 4691 Sep 17 16:54 vsftpd.conf -rwxr--r--. 1 root root 338 Feb 192013 vsftpd_conf_migrate.sh 三、 建立FTP的宿主帐户 1、建立ftp虚拟宿主帐户 ///vsftpd供虚拟帐户映射的系统真实用户,不需要登录shell权限 四、VSFTPD的配置文件 配置vsftpd.conf ///该文件在/etc/vsftpd/ cd /etc/vsftpd/cp vsftpd.conf vsftpd.conf.bak2、下面更改配置文件: [root@localhost vsftpd]# vi vsftpd.conf anonymous_enable=NO //不允许匿名用户访问。 local_enable=YES //设定本地用户可以访问。主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。 write_enable=YES //设定可以进行写操作。 local_umask=022 //设定上传后文件的权限掩码。 idle_session_timeout=600 data_connection_timeout=1200 //设置超时时间 dirmessage_enable=YES ///设定开启目录标语功能。 xferlog_enable=YES ///设定开启日志记录功能。 connect_from_port_20=YES ///设定端口20进行数据连接。 并且必须给与该vsftpd用户对日志文件vsftpd.log的读写权限,否则服务将启动失败。 xferlog_std_format=YES ///设定日志使用标准的记录格式。 注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。 async_abor_enable=YES ///设定支持异步传输功能。 chroot_local_user=YES chroot_list_enable=YES ///禁止用户登出自己的FTP主目录。 chroot_list_file=/etc/vsftpd/chroot_list ///如果开启了chroot_list_enable=YES,那么一定要开启这个,这条是锁定登录用户只能家目录的位置。
touch/etc/vsftp/chroot_list,然后将帐户输入一行一个,保存就可以了,如果不需要限制用户,也可以只建立一个空文件,或者将chroot_list_enable=NO ls_recurse_enable=NO ///禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么挡多用户同时使用该命令时将会对该服务器造成威胁。 listen=YES ///设定该Vsftpd服务工作在StandAlone模式下。顺便展开说明一下,所谓StandAlone模式就是该服务拥有自己的守护进程支持,在ps -A命令下我们将可用看到vsftpd的守护进程名。如果不想工作在StandAlone模式下,则可以选择SuperDaemon模式,在该模式下 vsftpd将没有自己的守护进程,而是由超级守护进程Xinetd全权代理,与此同时,Vsftp服务的许多功能将得不到实现。 userlist_enable=YES ///设定userlist_file中的用户将不得使用FTP。 tcp_wrappers=YES ///设定支持TCP Wrappers。 使用虚拟用户需要增加以下部分默认中不包含这些设定项目,需要自己手动添加: guest_enable=YES ///设定启用虚拟用户功能。 这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,注:就是这些配置文件名必须和虚拟用户名相同。
五、创建日志文件 [root@localhost vsftpd]# chown vsftpd.vsftpd /var/log/vsftpd.log 六、创建虚拟用户名单文件 建立了一个虚拟用户名单文件,用来记录vsftpd虚拟用户的用户名和口令的数据文件,这里命名为v_user。为了目录清晰,这个名单文件就放置在/etc/vsftpd/vconf/下 [root@localhost vsftpd]# mkdir /etc/vsftpd/vconf/ [root@localhost vsftpd]# touch /etc/vsftpd/vconf/v_user 七、创建虚拟用户 编辑上面创建的虚拟用户名单文件v_user,在其中加入用户的用户名和口令信息。 格式:奇数行为用户名,偶数行是密码,其他的以此类推 [root@localhost vsftpd]# vi /etc/vsftpd/vconf/v_user test //用户名 八、生成虚拟用户数据库文件 [root@localhost vsftpd]# db_load -T -t hash -f /etc/vsftpd/vconf/v_user /etc/vsftpd/vconf/v_user.db 需要特别注意的是,以后再要添加虚拟用户的时候,只需要按照上面的格式:“奇数行为用户名,偶数行是密码”的格式将新用户名和口令添加进虚拟用户名单文件。如此不会生效的,还要再执行一遍“ db_load -T -t hash -f 虚拟用户名单文件 虚拟用户数据库文件.db ”的命令使其生效才可以! db_load -T -t hash -f /etc/vsftpd/vconf/v_user /etc/vsftpd/vconf/v_user.db -T允许应用程序能够将文本文件转译载入进数据库。由于我们之后是将虚拟用户的信息以文件方式存储在文件里的,为了让Vsftpd这个应用程序能够通过文本来载入用户数据,必须要使用这个选项。 -t如果指定了选项-T,那么一定要追跟子选项-t,追加在-T选项后,用来指定转译载入的数据库类型。扩展介绍下,-t可以指定的数据类型有Btree、Hash、Queue和Recon数据库。这里,接下来我们需要指定的是Hash型。 九、设置数据库文件的权限 十、修改/etc/pam.d/vsftpd文件,增加以下红色部分内容 #%PAM-1.0 auth sufficient pam_userdb.so db=/etc/vsftpd/vconf/v_user account sufficient pam_userdb.so db=/etc/vsftpd/vconf/v_user session optionalpam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth account include password-auth session requiredpam_loginuid.so session include password-auth 以上红色部分两条是手动添加的,内容是对虚拟用户的安全和帐户权限进行验证。 这里的auth是指对用户的用户名口令进行验证。 再后面的pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。 特别注意: 一定要使用“sufficient” ,按照老版本的做法,这里使用required ,则会发生用户认证不通过,报如下错误: [root@localhost vsftpd]# tail /var/log/secure Sep 17 17:28:20 localhost vsftpd[1387]: pam_unix(vsftpd:auth): check pass; user unknown Sep 17 17:28:20 localhost vsftpd[1387]: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=test r host=localhost Sep 17 17:28:20 localhost vsftpd[1387]: pam_succeed_if(vsftpd:auth): error retrieving information about user test 十一、创建用户的配置文件 用户配置文件的名字要和创建的“虚拟用户”名字对应 #touch /etc/vsftpd/vconf/test #vim /etc/vsftpd/vconf/test local_root=/data/ftp/ //虚拟用户的个人目录路径 //如果开启,那么所有非匿名登陆的用户名都会被切换成guest_username指定的用户名 anon_upload_enable=YES //匿名用户可以上传 anon_mkdir_write_enable=YES //匿名用户可以建目录 anon_other_write_enable=YES //匿名用户其它的写权利 local_max_rate=1048576 //本地用户的最大传输速度,单位是Byts/s
#vim /etc/vsftpd/vconf/test local_root=/data/ftp/ //虚拟用户的个人目录路径 write_enable=NO //用户无写权限 anon_upload_enable=NO //匿名用户不可以上传 anon_mkdir_write_enable= NO //匿名用户不可以建目录 anon_other_write_enable= NO //匿名用户无写权利 local_max_rate=1048576 //本地用户的最大传输速度,单位是Byts/s, 十二、建立虚拟用户目录 mkdir /data/ftp/chown vsftpd.vsftpd /data/ftp/chmod 700 /data/ftp/ ///如果不设置为700的权限,则会发生如下错误
配置就此完成,如果想增加新的用户,只要按照上面的第八步、第十一步进行就可以了。 十三、所有配置完后的目录文件及结构 [root@localhost vsftpd]# ll /etc/vsftpd/ -rw-r--r--. 1 root root 0 Sep 17 16:47 chroot_list -rw-------. 1 root root 125 Feb 192013 ftpusers -rw-------. 1 root root 361 Feb 192013 user_list drwxr-xr-x. 2 root root 4096 Sep 17 18:22 vconf -rw-r--r-- 1 root root 4689 Sep 18 10:32 vsftpd.conf -rwxr--r--. 1 root root 338 Feb 192013 vsftpd_conf_migrate.sh [root@localhost vsftpd]# ll /etc/vsftpd/vconf -rw-r--r-- 1 root root125 Sep 17 18:22 test -rw-------. 1 root root 12 Sep 17 16:55 vir_user -rw-------. 1 root root 12288 Sep 17 16:55 vir_user.db 十四、关于防火墙规则 1、添加下面规则到 iptables #iptables-restore < /etc/sysconfig/iptables //重载配置,即时生效 2、SElinux状态及关闭 注释:
#setenforce 0|1 //配置状态
#vim /etc/selinux/config //编辑文件SELINUX=“diskabled”,即时不生效,重启后生效 |
|