vsftp+pam+mysql
vsftpd是目前在linux系统环境下表现最为优越的安全,稳定,快速的性能,加上vsftpd的可读性强、易配置,受到更为广泛的应用。vsftpd有三种实现的形式,分别为:
1、匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问;
2.本地用户形式:以/etc/passwd中的用户名为认证方式;
3、虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服务器中。
这次运用第三种虚拟用户形式在数据库中保存vsftp的登陆的账号和密码。用pam验证登陆
1.安装pam_mysql-0.7RC1.tar.gz
# tar xfpam_mysql-0.7RC1.tar.gz
# cd pam_mysql-0.7RC1
# ./configure--with-openssl
# make && makeinstall #如果报错,安装mysql-devel
# ls /usr/lib/security/
classpath.securitypam_mysql.la pam_mysql.so
# ln -s/usr/lib/security/pam_mysql.so /lib/security/pam_mysql.so
2.创建一个必要的本地用户虽说是虚拟用户,不过,由于虚拟用户的信息存储在MySQL数据库中,所以还是需要一个能够读取MySQL数据库的本地用户.
# useradd -s/sbin/nologin virtual
# mysql -u root -p
Enter password:
mysql> CREATE DATABASEvsftpd;
Query OK, 1 row affected(0.02 sec)
mysql> USE vsftpd;
Database changed
3.创建用于存储虚拟用户信息的表users
mysql> CREATE TABLEusers (username varchar(20) NOT NULL,password varchar(40) NOT NULL,PRIMARY KEY(username)) TYPE=MyISAM;
Query OK, 0 rows affected,1 warning (0.01 sec)
4.让本地用户virtual能读取vsftpd数据库的users表的内容
mysql> grant selecton vsftpd.users to virtual@localhost identified by '123456';
Query OK, 0 rowsaffected (0.00 sec)
mysql> flushprivileges;
Query OK, 0 rowsaffected (0.00 sec)
5.建立虚拟用户
mysql> insert intousers values ('vu1','123');
Query OK, 1 row affected(0.00 sec)
mysql> insert intousers values ('vu2','123');
Query OK, 1 row affected(0.00 sec)
mysql> insert intousers values ('vu3','123');
Query OK, 1 row affected(0.00 sec)
mysql> quit
Bye
6.配置vsftpd的PAM验证
# vim/etc/pam.d/vsftpd_mysql
auth requiredpam_mysql.so user=virtual passwd=123456 host=localhost db=vsftpd table=usersusercolumn=username passwdcolumn=password crypt=0
account requiredpam_mysql.so user=virtual passwd=123456 host=localhost db=vsftpd table=usersusercolumn=username passwdcolumn=password crypt=0
7.配置ftp,/etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd_mysql#pam_service_name=vsftpd_mysql要与/etc/pam.d/配置文件的文件名相同
guest_enable=YES #guest_enable=YES开启虚拟用户功能
guest_username=virtual #guest_username=virtual指定虚拟用户使用的系统用户
virtual_use_local_privs=YES #virtual_use_local_privs为虚拟用户设置不同权限设置为YES时,虚拟用户使用与本地用相同权限设置为NO时,虚拟用户使用与匿名用户相同权限
可以到百度云盘下载账号pankuo1@sina.cn密码pk492940446
本文转自潘阔 51CTO博客,原文链接:http://blog.51cto.com/pankuo/1386205,如需转载请自行联系原作者