1、安装

yum -y install vsftpd   db4-utils  (db_load工具,用户加密用户名密码文件,生成.db文件)

 

2、生成验证用户名密码数据库

vim /etc/vsftpd/login.txt

aaa (用户名)

123456 (密码)

bbb  (用户名)

asdf(密码)

ccc (用户名)

7654(密码)

保存退出


保存虚拟帐号和密码的文本文件无法被系统帐号直接调用哈~我们需要使用db_load命令生成db口令数据库文件
 
db_load -T -t hash -f  /etc/vsftpd/login.txt /etc/vsftpd/login.db
 
 
(3)修改数据库文件访问权限

数据库文件中保存着虚拟帐号的密码信息,为了防止非法用户盗取哈,我们可以修改该文件的访问权限。生成的认证文件的权限应设置为只对root用户可读可写,即600

[root@red-hat-5 /]# chmod 600 /etc/vsftpd/vsftpd_login.db
[root@red-hat-5 /]# ll /etc/vsftpd/vsftpd_login.db
-rw------- 1 root root 12288 12-25 23:12 /etc/vsftpd/vsftpd_login.db
 
3.配置PAM文件

为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块.PAM(Plugable Authentication Module)为可插拔认证模块,不必重新安装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。PAM模块配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。
[root@red-hat-5 /]# cat /etc/pam.d/vsftpd      (把原先的内容都注视掉,加入两行新内容)
#%PAM-1.0
#session    optional     pam_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     system-auth
#account    include     system-auth
#session    include     system-auth
#session    required     pam_loginuid.so
auth    required    /lib64/security/pam_userdb.so  db=/etc/vsftpd/login
account   required    /lib64/security/pam_userdb.so  db=/etc/vsftpd/login
 
注意:db=/etc/vsftpd/login 格式是这样的,去掉.db后缀
 
注意如果是64位系统,请填写路径为/lib64/security/pam_userdb.so  
           如果是32位系统,则直接写/lib/security/pam_userdb.so  
 
4建立虚拟用户所对应的本地用户 (如果需要设置较为复杂的权限,可以创建多个本地用户,在虚拟用户配置文件中将虚拟用户映射为本地用户,来进行授权)
 
 # useradd -s /sbin/nologin  -d /ftp   vsftp  
设置vsftp 用户家目录即为FTP主目录
授权:
chown -R vsftp.vsftp /ftp
 

笔者在生产环境下用的配置:

[root@demo-PG vsftpd]# cat vsftpd.conf| grep -v "^#"
anonymous_enable=NO  禁用匿名用户登录
local_enable=YES       启用本地用户登录设置
write_enable=YES     允许使用任何可以修改文件系统的FTP的指令
local_umask=022    
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=Please must be use english name for file or directory!

listen=YES

pasv_enable=YES              允许PASV模式进行数据传输
pasv_min_port=65520       PASV模式下数据传输所使用port范围下界
pasv_max_port=65530       PASV模式下数据传输所使用port范围上界

user_config_dir=/etc/vsftpd/login     设置虚拟帐号的主目录为/etc/vsftpd/login

pam_service_name=vsftpd    配置vsftpd使用的PAM模块为vsftpd

userlist_enable=YES

tcp_wrappers=YES

 

 

 

[root@demo-PG vsftpd]# ll login
总计 16
-rw-r--r-- 1 root root 117 09-17 15:53 aaa
-rw-r--r-- 1 root root 115 09-17 16:27 bbb
-rw-r--r-- 1 root root 115 09-17 16:27 ccc
[root@demo-PG vsftpd]# cat login/aaa    (aaa用户只允许下载ftp中的内容)
guest_enable=YES                          开启此虚拟用户的登录FTP权限
guest_username=vsftp                     映射此虚拟用户对应的本地系统用户
anon_world_readable_only=NO
 
[root@demo-PG vsftpd]# cat login/bbb     (bbb用户只允许上传ftp中的内容)
guest_enable=YES
guest_username=vsftp
anon_upload_enable=YES
 
[root@demo-PG vsftpd]# cat login/ccc    (ccc用户可以完全修改ftp中的内容)
guest_enable=YES
guest_username=vsftp
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
 

 

service vsftpd restart

配置完成!

user_config_dir=/etc/vsftpd ,这段配置文件就是告诉vsftpd,当虚拟用户登录成功后(也许是在登陆时)就会读取这个目录下的与虚拟用户名一直的配置文件,注意 user_config_dir 的值是目录的名称,而且此目录下一定要有和虚拟用户名称一样的配置文件