第一步:安装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
第三步:建立ftp虚拟宿主帐户
#useradd ftpuser -s
/sbin/nologin
这ftpuser只个虚拟帐户的宿主,本身是不用登录的
第四步:配置vsftpd.conf
更改配置前最好备份一下然后再改
vim /etc/vsftpd/vsftpd.conf
第六步:建立虚拟用户文件
#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了