主机:CentOS 6.2
1>添加虚拟用户的用户及密码
[root@localhost vsftpd]# vim db_user.txt
写入如下,单行用户名,双行密码
virtual1
abcd1234
virtual2
abcd1234
2> 生成用户口令认证文件
用户认证文件的生成需要安装额外的软件来实现,软件名为:db4-utils
[root@localhost Packages]# rpm -ivh db4-utils-4.7.25-16.el6.i686.rpm
warning: db4-utils-4.7.25-16.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Preparing... ########################################### [100%]
package db4-utils-4.7.25-16.el6.i686 is already installed
使用命令开始生成文件,文件名为:db_user.db
[root@localhost vsftpd]# db_load -T -t hash -f db_user.txt db_user.db
3>为保证安全性可以把密码文件修改一下权限
[root@localhost vsftpd]# chmod 600 db_user.*
4> 编辑PAM认证文件,先把此文件备份一下
[root@localhost vsftpd]# cp -p /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
编辑文件,把里面的内容全部删除之后再写入如下两句,如果系统是64位的,就把下面的lib修改成lib64就行了,注意,一定要把里面的内容给清除,不然的话是不成功的.
[root@localhost vsftpd]# vim /etc/pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/db_user
account required /lib/security/pam_userdb.so db=/etc/vsftpd/db_user
5>FTP虚拟用户是需要一个系统用户的,这个用户不需要密码,也不需要登录,只提供一个登录目录.并且让这个目录对other用户拥有读写权限.
[root@localhost vsftpd]# useradd -s /sbin/nologin code
[root@localhost vsftpd]# chmod o+rw /home/code
6>修改vsftpd主配置文件,让系统支持虚拟用户,添加如下内容
[root@localhost vsftpd]# vim vsftpd.conf
guest_enable=yes
guest_username=code
7>重启vsftpd服务器
[root@localhost vsftpd]# service vsftpd restart
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
8>开始测试
在另一台linux下测试,首先在/home/code中写入一些内容,如
[root@localhost vsftpd]# echo "this is a test" > /home/code/code.txt
使用另一台Linux连接
[code@root ~]$ lftp virtual1@192.168.1.102
口令:
lftp virtual1@192.168.1.102:~> ls
-rw-r--r-- 1 0 0 15 Oct 25 07:55 code.txt
9>测试成功!
注:如果你在登录之后全出现如下情况的话,那么就是你的SELinux在起作用,SELinux阻止了你的登录
lftp code@192.168.1.102:~> ls
ls: 登录失败: 500 OOPS: cannot change directory:/home/code
我们可以直接关闭SELinux
命令:/usr/sbin/setenforce 0
也可以使用另一种方法
这样就可以了....