您的位置:首页 > 运维架构 > Linux

CentOS6 vsFTP安装与配置

2013-07-24 00:15 288 查看
客户公司要架设两台FTP服务器分别给两个地点的分公司使用,但是这两台服务器都比较老了,一台HP 380G5 ,一台HP 380 G4,所以他们计划用linux,用什么版本他们就没说,于是我计划用CentOS6.2,其实安装和配置vsFTP都很简单,网上也很多了,不过还是详细记录一下好

环境:CentOS6.0+vsFTP 0:2.2.2-6.el6_2.1

第一步:安装vsftp pam db4

yum install vsftpd pam* db4*-y

========================================================================================

Installed:

db4-cxx.i686 0:4.7.25-16.el6 db4-devel.i686 0:4.7.25-16.el6 db4-devel-static.i686 0:4.7.25-16.el6 db4-java.i686 0:4.7.25-16.el6

db4-tcl.i686 0:4.7.25-16.el6 pam-devel.i686 0:1.1.1-10.el6 pam_ldap.i686 0:185-11.el6 pam_pkcs11.i686 0:0.6.2-11.1.el6

pam_ssh_agent_auth.i686 0:0.9-70.el6_2.2 vsftpd.i686 0:2.2.2-6.el6_2.1

Dependency Installed:

pcsc-lite-libs.i686 0:1.5.2-6.el6

========================================================================================

通过setup对系统服务及防火墙进行配置,然后reboot系统

或者使用命令将vsftp配置为系统服务

chkconfig --level 35 vsftpd on

第二步:配置vsftpd服务的宿主

#useradd vsftpdadmin -s /sbin/nologin

这个vsftpdadmin只是用来替换root的,并不需要登录

第三步:建立ftp虚拟宿主帐户

#useradd ftpuser -s /sbin/nologin

这ftpuser只个虚拟帐户的宿主,本身是不用登录的

第四步:配置vsftpd.conf

更改配置前最好备份一下然后再改

vim /etc/vsftpd/vsftpd.conf

修改下面红色字体的部分为蓝色字体的形式,紫色字体是配置原有的

anonymous_enable=YES --> anonymous_enable=NO //不允许匿名用户访问,默认是允许。

#chroot_list_enable=YES --> chroot_list_enable=YES //不允许FTP用户离开自己主目录,默认是被注释掉的。

#chroot_list_file=/etc/vsftpd/chroot_list --> chroot_list_file=/etc/vsftpd/chroot_list //如果开启了chroot_list_enable=YES,那么一定要开启这个,这条是锁定登录用户只能家目录的位置,如果不开启用户登录时就会报500
OOPS的错。

注意:/etc/vsftp/chroot_list本身是不存在的,这要建立vim /etc/vsftp/chroot_list,然后将帐户输入一行一个,保存就可以了

local_enable=YES //允许本地用户访问,默认就是YES,不用改

write_enable=YES //允许写入,默认是YES,不用改

local_umask=022 //上传后文件的权限掩码,不用改

dirmessage_enable=YES //开启目录标语,默认是YES,开不开无所谓,我是默认就行

xferlog_enable=YES //开启日志,默认是YES,不用改

connect_from_port_20=YES //设定连接端口20

xferlog_std_format=YES //设定vsftpd的服务日志保存路径,不用改

(这步后面要有几个操作才能运行,也就是touch这个文件(见第五步),因为它本身不存在,而且还要给文件写入的权限)

#idle_session_timeout=600 --> idle_session_timeout=600 //会话超时,客户端连接到ftp但未操作,默认被注释掉,可根据个人情况修改

#async_abor_enable=YES --> async_abor_enable=YES //支持异步传输功能,默认是注释掉的,去掉注释

#ascii_upload_enable=YES --> ascii_upload_enable=YES //支持ASCII模式的下载功能,默认是注释掉的,去掉注释

#ascii_download_enable=YES --> ascii_download_enable=YES //支持ASCII模式的上传功能,默认是注释掉的,去掉注释

#ftpd_banner=Welcome to blah FTP service //FTP的登录欢迎语,本身是被注释掉的,去不去都行

#chroot_local_user=YES --> chroot_local_user=YES //禁止本地用户登出自己的FTP主目录,本身被注释掉,去掉注释

pam_service_name=vsftpd //设定pam服务下vsftpdd的验证配置文件名,不用改

userlist_enable=YES //拒绝登录用户名单,不用改

TCP_wrappers=YES //限制主机对VSFTP服务器的访问,不用改(通过/etc/hosts.deny和/etc/hosts.allow这两个文件来配置)

增加

guest_enable=YES //设定启用虚拟用户功能。

guest_username=ftpuser //指定虚拟用户的宿主用户。

virtual_use_local_privs=YES //设定虚拟用户的权限符合他们的宿主用户。

user_config_dir=/etc/vsftpd/vconf //设定虚拟用户个人Vsftp的配置文件存放路径

第五步:建立日志文件

#touch /var/log/vsftpd.log //日志文件

#chown vsftpdadmin.vsftpdadmin /var/log/vsftpd.log //属于vsftpdadmin这个宿主

第六步:建立虚拟用户文件

#mkdir /etc/vsftpd/vconf/

#touch /etc/vsftpd/vconf/vir_user

第七步:建立虚拟用户

#vim /etc/vsftpd/vconf/vir_user

virtualuser //用户名

12345678 //密码

注意:第一行用户名,第二行是上一行用户名的密码,其他人的以此类推

第八步:生成数据库

#db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db

第九步:设置数据库文件的访问权限

#chmod 600 /etc/vsftpd/vconf/vir_user.db

#chmod 600 /etc/vsftpd/vconf/vir_user

第十步:修改/etc/pam.d/vsftpd内容

echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" > /etc/pam.d/vsftpd

echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd

第十步:创建用户的配置文件

注意:用户配置文件的名字要和创建的“虚拟用户”名字对应

#touch /etc/vsftpd/vconf/virtualuser

#vim /etc/vsftpd/vconf/virtualuser

输入:

local_root=/home/virtualuser //虚拟用户的个人目录路径

anonymous_enable=NO

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

idle_session_timeout=600

data_connection_timeout=120

max_clients=10

max_per_ip=5

local_max_rate=1048576 //本地用户的最大传输速度,单位是Byts/s,我设定的是10M

第十一步:建立虚拟用户目录

如果不建立虚拟用户的个人目录,那么所有的虚拟用户登录后所在的目录都是同一个目录下

# mkdir /home/virtualuser

# chown ftpuser.ftpuser ./virtualuser

# chmod 600 /home/virtualuser

配置就此完成,如果想增加新的用户,只要按照上面的第七步、第十步进行就可以了。

遇到的问题
问题

其实这回遇到的问题不多。

1,450:读取目录列表失败

在配置完第一台vsftp后(上面的配置就是)再用同样的过程做第二台,完成后用客户端和浏览器死活无法登录报错:

450:读取目录列表失败

只有在命令提示符和Termin下通过ftp 192.168.88.30后ls没有问题

对比了之前的配置,每一步都没错,难到是PASV问题,于是在vsftpd.conf加上了一句pasv_enable=NO,然后……没然后了,一切都正常了

2、中文乱码

这个是老生常谈的问题,好象也一直没有什么好的解决办法,网上也有提出改i18n,不过客户提出不用改,他们公司主要都是英文档,也我也省事了,不过还是当个问题记录吧

3、500 OOPS:cannot change directory:/home/pmfile

新建用户后登录报错,刚开始以为是selinux的问题,后来一想不对,其他的帐号都没事,肯定刚才己关闭了selinux,那么就是权限问题了,果然是刚才忘了把权限给虚拟ftp宿主权限了:chown -R ftpuser.ftpuser /home/publicfile

4、530错误:Login incorrect.

这是一个让我觉的搞笑的问题,第二台vsftp服务我用自己的本上的客户端(FileZilla)登录没问题,而客户用他的本登录就不行,用的软件都一样,不同的是我用的是Ubuntu,他用的是win7,但在win7的命令提示符下他却也能登录也能ls,不是权限问题,不是pam问题,这两块都着手试过,结果发现是客户在终端输入的密码错误,之前我还一再问他到底有没有输错密码,他也十分肯定的说没有,结果……

5、外网无法登录,550错误,错误: 读取目录列表失败

这个问题很是挠头,在做完第二台服务器后让客户先从内网登录,一切都很正常,而从外网登录时就会出现“550 Permission denied.”“错误: 连接超时”“错误: 读取目录列表失败”,难到是权限?

试来试去什么PASV、什么权限更改全做了(这一步是我着实不想做的,要是登录用户权限有问题内网也该无法登录),最后让客户的网管带我去查了一下他们路由器的配置,我才发现他们的内网映射没有开放TCP20端口,开放后就OK了

本文出自 “青瞳” 博客,请务必保留此出处/article/4356533.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: