如果你已经对pam有所了解,请跳过,我知道的可能还不如你多。你不感兴趣也请跳过,因为不看这个也可配置。
用户 <-> vsftpd <-> PAM模块 <-> 用户和密码数据库
vsftpd用了一种很聪明同时也是unix/linux规范的方法来认证用户,就是PAM。大家对于PAM,也许有些陌生,但是一直在用。所谓PAM,英文是:Pluggable Authentication Modules,可拔插认证模块(不知道这样翻译对不对)。看见plug这个关键字,就知道是很灵活的。
现在几乎所有daemon程序一般都是用PAM来进行认证的,包括telnet/sshd/imapd,甚至你的login,都是用PAM
PAM的最大好处是灵活。它不管你的用户和密码用什么数据格式存储(数据库也好,通常用的密码文件也好),只要有相应的PAM模块就可以存储。比如说,大家不仅可以用vsftpd + PgSQL做用户登陆 验证,只要你喜欢你还可以用MySQL,Oracle,LDAP数据库存储用户数据,只要有相应的PAM就可以。所有的daemon都可以用一个后台数据库来做用户验证登陆,包括telnet/sshd等等。
相关文件下载:
具体下载目录在 /2012年资料/3月/4/CentOS 6.0 vsFTPd虚拟用户配置总结/
1.系统版本为centos6.0,直接用yum来安装vsftpd
[root@localhost ~]#yum -y install vsftpd db4-devel db4 db4-utils pam-devel pam pam_pkcs11 ftp //安装软件和vsftpd
2.[root@localhost ~]#chkconfig vsftpd on//开机2345启动vsftpd服务
3.[root@localhost ~]#cp -rf /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.1//备份一下vsftpd.conf为vsftpd.conf.1
4.[root@localhost ~]#grep -v "#" /etc/vsftpd/vsftpd.conf.1>/etc/vsftpd/vsftpd.conf//去除#号重定向到/etc/vsftpd/vsftpd.conf文件中。
5.[root@localhost ~]#cat /etc/vsftpd/vsftpd.conf//vsftpd.conf内容如下:
anonymous_enable=NO#设定不允许匿名访问
local_enable=YES#设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问。
#chroot_list_enable=YES #使用户不能离开主目录我这句是没加入的加入就登录不了不知道为什么?
write_enable=YES
local_umask=022//生成掩码为022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log#设定vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来
xferlog_std_format=YES
ascii_upload_enable=YES #允许使用ASCII模式上传
ascii_download_enable=YES #设定支持ASCII模式的上传和下载功能。
listen=YES
guest_enable=YES#设定启用虚拟用户功能
guest_username=vritual#指定虚拟用户的宿主用户。-RHEL/CentOS中已经有内置的ftp用户了我这里是自己创建的vritual
pam_service_name=vsftpd#PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
user_config_dir=/etc/vsftpd/vuser_conf#设定虚拟用户个人vsftp的RHEL/CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)
virtual_use_local_privs=YES
6.创建vsftpd密码文件
[root@localhost ~]#vi /etc/vsftpd/vsftpd.login.txt//一行为用户名另外一行为密码。
zhh
123456
user1
user1
user2
user2
user3
user3
user4
user4
user5
user5
7.[root@localhost ~]#db_load -T -t hash -f /etc/vsftpd/vsftpd.login.txt /etc/vsftpd/vsftpd.login.db//生成vsftpd.login.db文件chmod 700权限。
8.[root@localhost ~]#vi /etc/pam.d/vsftpd//这个文件最前面添加vsftpd.login最好添加在最前面。
#%PAM-1.0
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd.login//第一句
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd.login//第二句
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 password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
~
9.[root@localhost ~]#mkdir /etc/vsftpd/vuser_conf/ //创建vuser_conf文件夹
10.[root@localhost ~]#vi /etc/vsftpd/vuser_conf/zhh//创建虚拟用户个性RHEL/CentOS FTP服务文件
local_root=/home/ftpsite/zhh//虚拟用户的根目录(根据实际修改)
write_enable=YES可写
anon_umask=022掩码
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES