登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

杨树叶子的博客

 
 
 

日志

 
 
 
 

Debian+vsftpd+MySQL实现虚拟用户  

2007-04-23 02:18:52|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 前些天用vsftpd+mysql实现虚拟用户登录,把偶的菜鸟笔记和大家分享一下,有什么问题请指正
特别申明:本文不适合Linux老鸟们
HTML版本:http://guitarbug.googlepages.com/vsftpdmysql.html

-----------------------------

Debian+vsftpd+MySQL实现虚拟用户
(posted by guitarbug @ 2006.6.12)

一,需求

1,虚拟用户登录
   由于之前配置成功了postfix+MySQL虚拟用户登录,体会到了使用虚拟用户的好处和灵活性,所以这次也考虑采用虚拟用户,并且将FTP虚拟用户的信息也存储在MySQL中,这样以后用PHP等写一些WEBGUI的管理程序,统一管理用户,还是蛮方便的.

2,限制IP的匿名登录
   开放匿名登录,但是只允许特定的IP可以匿名登录

3,不同用户,不同目录,不同权限
   听起来有点像绕口令吧,举例来说,有2个用户,分别是普通用户(normal)和管理员(admin),FTP有2个目录,分别是incoming和pub,要实现如下权限设置:

代码:
incoming pub normal 读/写只读 admin 读/写 读/写

4,通过FTP管理Web站点
   服务器上还架设了Apache,而网站管理员对Linux又不是很熟悉,而且也不想开放一个帐号给网站管理员,以免他登录到系统上去,把系统搞的乱78糟,所以参考Internet上提供虚拟主机的流行做法,就是通过FTP来管理网站,所以需要提供一个可供网站管理员登录FTP进行网站管理的帐号.

5,扩展功能
    待定..

二,选择FTP服务器软件
   Linux下架设FTP站点,有很多优秀的FTP服务器软件可供选择,例如Wu-FTPD,Pure-FTPD,ProFTPD以及vsFTPD等等,要想选择一个适合自己需求的FTP服务器软件,也需要费点脑筋才行,对于我来说,选择vsftpd(very secure FTP daemon),主要有以下两点原因:

1,选择原则一
   有人说,哪个FTPD是你最熟悉的就用哪个,不过由于我之前没有在Linux下架设FTP站点的经验,所以,对我来说,一切都是新的起点.在vsftpd的官方主页上看到了Debian官方FTP,RH官方FTP等都使用了vsftpd,于是"随波逐流"吧,这样看起来会有面子些~

2,选择原则二
   第二点很大程度取决于vsftpd(very secure FTPdaemon)的名字,因为它是很安全的FTP软件嘛,哈哈,再说Debian官方等FTP都使用了vsftpd,选择它应该没错的~

PS:FTP服务器软件的选择可以参考"鸟哥的Linux私房菜中的简易vsftpd服务器架设"一文.

三,实现
    基于DebianGNU/Linux 3.1 Sarge 和 vsftpd-2.0.3

1,需要的软件包
1),vsftpd
    very secureFTP daemon

2),mysql-server,mysql-client
   前者是MySQL数据库服务器,用于存储虚拟用户信息,后者提供一个命令行的MySQLClient.由于我之前配置postfix时,已经安装过了MySQL,所以我不必安装这个包了^_^

3),libpam-mysql 
   vsftpd是通过PAM验证用户信息的,这个包可以让PAM去读取MySQL完成验证.

2,安装
以root登录Debian,输入以下命令,搞定~
代码:
#apt-get installvsftpd,libpam-mysql

3,创建一个必要的本地用户
   虽说是虚拟用户,不过,由于虚拟用户的信息存储在MySQL数据库中,所以还是需要一个能够读取MySQL数据库的本地用户.

1),创建本地用户的家目录,此目录也是FTP的家目录
代码:
#mkdir /home/ftp

2),创建名为ftpguest的本地用户
代码:
#useradd ftpguest -d/home/ftp

3),修改FTP家目录的所有者和组
代码:
#chown ftpguest.nogroup/home/ftp

4,配置MySQL数据库

1),创建用于存储虚拟用户信息的数据库ftpvuser


代码:
#mysqladmin -u root -pcreate ftpvuser


2),连接数据库
代码:
#mysql -u root -p

3)创建用于存储虚拟用户信息的表users
代码:
mysql>use ftpvuser;mysql>CREATE TABLE users (username varchar(20) NOT NULL,
password varchar(40) NOT NULL,
PRIMARY KEY (username)) TYPE=MyISAM;

4)让本地用户ftpguest能读取ftpvuser数据库的users表的内容
注:YourPassword用于设定ftpguest访问数据库的密码.
代码:
mysql>grant select onftpvuser.users to ftpguest@localhost identified
by 'YourPassword'; mysql>flush privileges;

5),建立虚拟用户
代码:
mysql>insert into users(username,password) values ('normal','555555'); mysql>insertinto users (username,password) values ('admin','666666');mysql>insert into users (username,password) values('webmaster','777777');


6),完成MySQL的配置
代码:
mysql>quit;

5,配置vsftpd的PAM验证

1),打开PAM配置文件
代码:
#nano/etc/pam.d/vsftpd


2),将以前的内容注释掉,然后添加下面2行内容
注:YourPassword就是刚才在前面设定的ftpguest访问数据库的密码.
代码:
auth required pam_mysql.souser=ftpguest passwd=YourPassword host=localhost
db=ftpvuser table=users usercolumn=username passwdcolumn=passwordcrypt=0
account required pam_mysql.so user=ftpguest passwd=YourPasswordhost=localhost
db=ftpvuser table=users usercolumn=username passwdcolumn=passwordcrypt=0

6,配置vsftpd

1),打开vsftpd的配置文件
代码:
#nano/etc/vsftpd.conf
注意:一旦修改了/etc/vsftpd.conf文件的内容,必须重启vsftpd才能使新的设置生效,方法是:
代码:
#/etc/init.d/vsftpd stop#/etc/init.d/vsftpd start
直接#/etc/init.d/vsftpd restart,好像不起作用?

2),修改vsftpd.conf文件如下
代码:
#关闭匿名用户访问#anonymous_enable=YES #开启本地用户访问 local_enable=YES#开启虚拟用户访问 guest_enable=YES guest_username=ftpguest#将本地用户限制在自己的家目录,这样可避免FTP用户访问到其他的系统目录chroot_local_user=YES


3),500 OOPS: cap_set_proc
   赶快登录FTP试一下吧,不过为什么无法登录呢?服务器返回错误:500 OOPS:cap_set_proc
Google之,这个错误似乎与SELinux有关,解决办法是加载capability模块:
代码:
#modprobe capability

为了让Linux在启动时自动加载此模块,把这个模块放到/etc/modules中即可.

  评论这张
 
阅读(90)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018