VSFTP+MySQL+PAM

Vsftp+mysql+pam配置手册
一、安装所需软件包
apt-get install vsftpd mysql-server mysql-client libpam-mysql
libpam-mysql 这个包可以让PAM读取MySQL数据来验证用户信息,其它的软件包就不用解译了吧!

二、设置FTP用户权限与家目录
在 操作第一步骤完后,系统会自动创建系统用户名:ftp,这个用户就是vsftpd默认的匿名用户,没有其它权限。在我的工作环境下这个用户名的家目录是 /home/ftp,RH系统ftp家目录是/var/ftp。呵呵,这都是无关紧要的,可以自由设置!你也可以自定义ftp匿名用户,并作相关修改,下 载教程中用户ftp也应修改成你自定义的用户名。
默认/home/ftp权限并不是用户ftp,我们要修改下。
#mkdir /home/ftp/temp
#chown -R ftp.nogroup /home/ftp

三、配置MySQL数据库
说起mysql我也惭愧,我对数据库是一点也不懂!一直以来我把数据库就简单的理解为一个庞大的信息仓库的。即原是信息就不得不想起安全吧!mysql默认状态下是很不安全的。我这里就只能简单的设置下口令,至于mysql优化请大家去阅读mysql手册吧!
#mysqladmin -u root -p password 123456 修改mysql的root密码,第一次修改因为root密码是空所以不用输入旧密码。
连接数据库:
#mysql -uroot -p 使用root用户连入本机mysql服务器
Enter password: 输入root用户密码,注意:不是系统根用户哦
mysql> 连入成功!如果没有出现这个提示符,则是上面两个步骤没有正确
mysql>create database vsftpd; 建立库名。记住,在mysql环境下命令的结束必须有“;”,如果忘记了输入“;”也不怕的,忘记了输入“;”则是换行,在mysql里面命令是可以分成几行执行的。你再输入“;”起同样的作用。
mysql>show databases; 查看库名是否建立,如果没有则重新执行上一步。
mysql>use vsftpd; 打开库vsftpd,以下操作就会针对vsftpd库。
mysql>create table users (name varchar(20) not null,password varchar(20) not null,primary key (name)) type=myisam; 创建名为users的表名,其中设置了两个键name和password。这里比较难理解,我一一解释吧!varchar(20) not null设置键长度为20,且不能为空,primary key(name)设置表的主键(主键是不能赋相同的值,因为ftp用户名不能相同)。type=myisam设置表的类型(MyISAM 全新二进制可移植的表处理器),这个是默认的,可以省略。
mysql>show tables; 查看表是否建立成功,没有请退到上一步。
mysql>insert into users values('admin','admin'); 建设虚拟用户admin,密码为admin。
mysql>insert into users values('download','download');
mysql>insert into users values('upload','upload');
mysql>insert into users values('web','web');
mysql>select * from users; 验证结果,如果看不到刚才建立的虚拟用户那么请退到上一步。
MySQL数据建好了,但是我们不能直接用root用户吧,要给它建立个用户供pam使用。
mysql>grant select on vsftpd.users to vsftpd@localhost identified by 'vsftpd';
#grant 命令
#select on vsftpd.users 所有权限,这里设置权限仅在vsftpd库的users表#使用select。
#to vsftpd@localhost 本机vsftpd用户(mysql按照用户名和所在IP区分用#户,root和root@%不是同一个用户。)
#identified by 'vsftpd' 设置vsftpd@localhost用户的口令为vsftpd。
mysql>quit; 退出mysql,mysql配置完成。
四、配置vsftpd的PAM验证
    #vim /etc/pam.d/vsftpd
    把以前的内容全部注释掉,然后添加如下肉容(下面只有两行,请注意):
    auth required pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
    account required pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
    解释一下:
    user=vsftpd    刚才添加的mysql用户名
    passwd=vsftpd 刚才添加的用户名密码
    host=localhost mysql服务器名,我是做在本机所以……。
    db=vsftpd      与这个对应create databases vsftpd,是存储用户名的mysql库名
    table=users    存储用户名的mysql库中的表名
    usercolumn=name 与mysql对应的键
    passwdcolumn=password 与mysql对应的键
    crypt=0 加密方式,0表示明文,1表示unix方式加密,2表示mysql中的password函数加密,3表示md5加密的。不过我都只有做成明文才成功了,1、2、3方法都不行! 知道的朋友告诉下哦!

相关推荐