当前位置:文档之家› ubuntu+vsftpd+MySQL+pam详细步骤

ubuntu+vsftpd+MySQL+pam详细步骤

Debian+vsftpd+MySQL+pam详细步骤2009-07-18 11:07在linux下有很多FTP服务器软件,例如:wu-ftpd;pure-ftpd;proftpd和vsftpd等等,对于那一个最优秀我也不好说,因为Debian官方FTP服务器,RH官方FTP服务器和IBM公司的FTP服务器软件都是使用的vsftpd软件,于是我就选择了它。vsftpd功能不是最全的,但是稳定性最好,如果你要对目录权限设置更加详细就选proftpd吧!

我的实验环境:

Debian GNU/linux 4.0R5
vsftpd-2.0.6-1.2
mysql-server-5.0.51a-15

一、安装所需软件包
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 -h 127.1 -u root -p 使用root用户连入本机mysql服务器
Enter password: 输入root用户密码,注意:不是系统根用户哦
mysql> 连入成功!如果没有出现这个提示符,则是上面两个步骤没有正确
mysql>create databases 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。这里比较难理解,我一一解释吧!varcha

r(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 https://www.doczj.com/doc/6d11071328.html,ers to vsftpd@localhost identified by 'vsftpd';
grant 命令
select on https://www.doczj.com/doc/6d11071328.html,ers 所有权限,这里设置权限仅在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方法都不行! 知道的朋友告诉下哦!



五、配置vsftpd,这里很重要,请大家参考vsftpd手册,我这里只简单的实现一下。
#vim /etc/vsftpd.conf
listen=YES 设置vsftpd进程模式,启用时以独立模式运行,默认是以xined负责监听、处理入站连接。
anonymous_enable=NO 是否允许匿名登入
local_enable=YES 是否允放本地用户登入,使用虚拟用户必须启用
guest_enab

le=YES 设置所有用户都当着匿名登入,虚拟用户必须
guest_username=ftp 设置匿名用户名称,如果设置虚拟用户则是设置虚护用户实际的用户
pam_service_name=vsftpd 指定/etc/p
am.d/vsftpd文件
chroot_local_user=YES 限制用户只能在家目录
hide_ids=YES 如果启用客户端目录和文件将显示为ftp,默认为NO
user_config_dir=/etc/vsftpd_user_conf 设置用户配置目录
idle_session_timeout=600 用户空闲10分钟自动断开
max_clients=100 限制客户端连接数100
max_per_ip=5 每个IP最大连接数
#cd mkdir /etc/vsftpd_user_conf/
#vim admin 建立用户配置文件,这个文件应与虚拟用户中同名。
anon_world_readable_only=NO 设置为YES时,只有全局可读(---r---r---r)文件才能下载
download_enable=YES 允许下载
write_enable=YES 允许修改
anon_upload_enable=YES 允许上传
anon_mkdir_write_enable=YES 允许建立目录
anon_other_write_enable=YES 允许删除文件
#cp admin download 复制文件
#cp admin upload
#cp admin web
#vim download
anon_world_readable_only=NO
download_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_max_rate=102400 限速,单位kb/s
#vim upload 哈哈,我把上传用户的权限设的很小吧!只有上传功能,而且目录限制在temp下。
anon_world_readable_only=NO
download_enable=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/ftp/temp 设置upload的目录为/home/ftp/temp
#vim web 我把web个用户设置为不能列出目录文件,但是可以通过完整路经下载哦。
anon_world_readable_only=NO
download_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
dirlist_enable=NO 设置目录列表能力!只能这样下载:ftp://web:web@152.23.63.12/Linux/Debian.iso

六、启动服务
#/etc/init.d/vsftpd stop
#etc/init.d/mysql stop
#etc/init.d/mysql start
#etc/init.d/vsftpd start
现在可以测试下服务器是不是可以正常工作,哈哈是不是很有成就感!
因为我是用apt安装的所以vsftpd服务和mysql服务开机会启动!



相关主题
文本预览
相关文档 最新文档