[配置 转载] Debian Linux下vsftpd+mysql虚拟用户作法

JavaGG 发布于 2009/05/06 11:07
阅读 515
收藏 1

Linux基金会免费官方培训及考试申请即将截止,戳这里申请!>>>

[配置 转载] Debian Linux下vsftpd+mysql虚拟用户作法 

[size=6][color=Pink]Debian Linux下vsftpd+mysql虚拟用户作法 [/color][/size]

今天闲来无事做了个ftp,原因很简单就是为了能在别处看到的好东西直接放到我的机器上,嘿嘿!linux下选择ftp服务器还真是不容易,经过一阵思索后就选择了vsftpd,理由就是它号称是linux下最安全的ftp服务器还有还有好多的大型站点都用它来做服务器(这样用起来也比较有面子  。为了怕在我输入密码时被别人偷看到然后登入我机器乱搞,在加上我本来就讨厌系统有那么多的用户(其实也是像显示自己的手平),所以我决定采用虚拟用户,因为机器中装有Mysql,于是我就想将虚拟用户数据放在mysql中,好了,就侃到这里,下面进入正题!

第一步:

安装vsftpd 

apt-get install vsftpd (Debian就是爽啊!) 

系统会自动生成一个配置文件和一个ftp用户供匿名用户使用,vsftpd使用PAM方式来验证虚拟用户,因为虚拟用户的信息保存在数据库中,所以我们还需要一个能够读取数据库内容的本地用户,而且还需要设置它的本地目录: 

#mkdir /var/ftp

#useradd -d ftpguest /var/ftp

#chown ftpguest.nogroup /var/ftp

第二步:安装mysql

apt-get install mysql-server mysql-clent 

建立数据库,并添加用户 

#mysql -p mysql>create ftpu; 

mysql>use ftpu; 

mysql>create table user(name char(20) binary,passwd char(20) binary); 

mysql>insert into user (name,passwd) values ('test1',password('1234567')); 

mysql>insert into user (name,passwd) values ('test2',password('7654321')); 

mysql>quit 

让ftpguest能访问ftpu和表user: 

#mysql -u root mysql -p mysql>grant select on ftpu.user to ftpguest@localhost identified by '123456'; 

mysql>quit 

第三步:因为vsftpd是通过PAM验证,所以我们还需要一个mysql通过PAM验证的包,在Debian下它叫做libpam-mysql 

apt-get install libpam-mysql 

然后打开vsftpd的PAM验证:

 #vi /etc/pam.d/vsftpd 

将以前的内容注释掉,然后加入以下内容: 

auth required pam_mysql.so user=ftpguest passwd=123456 host=localhost db=ftpu table=user usercolumn=name passwdcolumn=passwd crypt=2 

account required pam_mysql.so user=ftpguest passwd=123456 host=localhost db=ftpu table=user usercolumn=name passwdcolumn=passwd crypt=2 

上面的内容应该能看明白吧,那个crypt=2表示经过mysql的password()机密后的东西! 

第四步:修改vsftpd.conf文件 

#vi /etc/vsftpd.conf 

加入:

uest_enable=YES 

guest_username=ftpguest 

#表示ftpguest为vsftp的虚拟用户 

virtual_use_local_privs=YES 

#虚拟用户与本地用户有相同的权限 

write_enable=YES 

anon_upload_enable=YES 

anon_other_write_enable=YES 

#允许虚拟用户上传,修改和删除文件 

chroot_local_user=YES 

#虚拟用户只能访问自己的目录 

anonymous_enable=NO 

local_enable=YES 

#关闭匿名用户访问,开启本地用户访问 

第五步:

本来来到第四步已经完成了,可是后来一想,不对,那要是每次上传的东西都不同,到时把那个目录弄得乱七八糟的怎么管理啊,能不能为每个虚拟用户创建一个目录呢,比如说将music用户上传的文件放在放在~/music下,将doc用户上传的文件放在~/doc下呢?

能!当然能了,看看我怎么做?

首先在数据库中添加music和doc两个虚拟用户接下来: 

#mkdir /etc/vsftpd_user_conf 

#cd /etc/vsftpd_user_conf 

#touch music 

#echo "local_root=/home/username/music" > music 

#touch doc 

#echo "local_root=/home/username/doc" > doc 

#mkdir /home/username/music 

#chown ftpguest.nogroup /home/username/music 

#chmod 600 /home/username/music 

#chown ftpguest.nogroup /home/username/doc 

#chmod 600 /home/username/doc 

然后在vsftpd.conf中加入: user_config_dir=/etc/vsftpd_user_conf 

大功告成,你明白了吗? 

[color=cccccc]转载自:http://www.blogcn.com/user50/guangleiw/[/color]



加载中
返回顶部
顶部