分页: 1 / 1

[原创]无错配置ubuntu8.04+vsftpd+mysql+pam的ftp服务器端

发表于 : 2008-05-17 13:06
tisswb
因为工作需要安装一个ftp服务器,需要使用多ftp用户并能够方便的管理ftp用户。于是使用vsftp+mysql+pam的组合,在mysql中进行用户管理。特写了这么一个记录安装过程的文章,提供给大家一起讨论。

1.安装vsftpd

代码: 全选

sudo apt-get install vsftpd
2.创建guest用户

vsftpd安装的时候会自动安转一个ftp用户,在passwd中删除

代码: 全选

sudo useradd virtual
设置virtual的密码为webftp

代码: 全选

sudo passwd virtual
编辑virtual用户的主目录并设置shell

代码: 全选

sudo vim /etc/passwd
我设置的是virtual:x:1001:1001::/var/www:/bin/false

/var/www virtual的主目录

/bin/false 禁止virtual用户终端登陆

3.设置mysql数据库和用户权限

在phpmyadmin中建立vsftp数据库 vsftp用户

建立用户表

代码: 全选

create table users(name char(16) binary,passwd char(20) binary);
并授权vistual用户users表的select权限,并设置密码。

4.设置MySQL的PAM验证

安装libpam-mysql

代码: 全选

sudo apt-get install libpam-mysql
要设置vsftpd的PAM验证文件

代码: 全选

sudo cp /usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /etc/pam.d/vsftpd
把内容替换为如下:

代码: 全选

auth    required        /lib/security/pam_mysql.so      user=virtual    passwd=webftp   host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=0
account required        /lib/security/pam_mysql.so      user=virtual    passwd=webftp   host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=0
这里需要说明一下这个crypt,crypt 密码验证机制;0 代表明文,1 代表DES 加密,2 代表Mysql的password()函数加密,3代表md5算法,4代表sha加密。 这里要注意下密码的长度问题。


5.设置vsftpd.conf

代码: 全选

guest_enable=YES
guest_username=virtual
这两项必须打开,其他配置请查阅vsftpd.conf的配置手册

6.虚拟用户目录的权限改为只能由virtual操作:

代码: 全选

sudo chown virtual.virtual /var/www
sudo chmod 755 /var/www
virtual获得www文件夹的权限,并设置www文件夹权限为755

至此,最基本的虚拟用户已经完成。

代码: 全选

sudo /etc/init.d/vsftpd restart
重启vsftpd服务后即可以用users表中设置的用户名密码进行www文件夹的访问了。

这里没有设置虚拟用户的分目录控制,大家可以参考其他文章中讨论的内容,照着做就可以了。

这里提交我的vsftpd.conf和一个用户的配置文件供大家参考

sftpd.conf配置如下:

代码: 全选

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=20
ftpd_banner=Welcome to TisswbTest FTP server.
chroot_local_user=YES
pam_service_name=/etc/pam.d/vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd_user_conf

listen_port=8888
pasv_min_port=30000
pasv_max_port=30999
webadmin配置如下:

代码: 全选

local_root=/var/www
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
virtual_use_local_privs=YES

发表于 : 2008-05-17 17:37
angelus
实用的帖子,建立高度可扩展web和ftp结合者必学
给楼主赞一个

发表于 : 2008-05-17 20:28
tisswb
hehe 感谢楼上的朋友 下一步打算把用户配额和分目录管理加上,基本上就可以实现理想的功能了.
还忘多多指导,本人初学不久,多半都是从网上参考学习的

Re: [原创]无错配置ubuntu8.04+vsftpd+mysql+pam的ftp服务器端

发表于 : 2008-10-24 16:39
wangzi6hao
晕,搞了半天还没有结合起来,不知道哪儿被我改错了.
先前用本地用户都是可以登录的,想改成mysql的...没想到,不成功了.
伤心了.

Re: [原创]无错配置ubuntu8.04+vsftpd+mysql+pam的ftp服务器端

发表于 : 2008-10-24 17:13
angelus
关于这个帖子的后续帖子我也写个一篇,不过早沉底了,你可以找找看

viewtopic.php?f=54&t=131467
不知道现在还能不能用,一直没更新

Re: [原创]无错配置ubuntu8.04+vsftpd+mysql+pam的ftp服务器端

发表于 : 2008-11-14 16:47
tisswb
今天来更新一下自己的帖子,修补了一下发现的问题

Re: [原创]无错配置ubuntu8.04+vsftpd+mysql+pam的ftp服务器端

发表于 : 2010-09-15 23:03
opelia
有成功的吗 :em20

Re: [原创]无错配置ubuntu8.04+vsftpd+mysql+pam的ftp服务器端

发表于 : 2010-09-16 13:26
kayangelee
:em20 看起来不错 不知道能不能够成功

Re: [原创]无错配置ubuntu8.04+vsftpd+mysql+pam的ftp服务器端

发表于 : 2010-09-22 18:19
root127
学习了,,有时间做做验证一下。。

Re: [原创]无错配置ubuntu8.04+vsftpd+mysql+pam的ftp服务器端

发表于 : 2010-09-23 13:11
cheng1196
老掉牙还拿出来显摆 :em06 要专业ftp配置加我qq群 41283906