|
[
2007/12/07 12:21 | by tinkoko ]
|
下午由于帮一个客户搞一个ftp服务器,由于权限复杂,账户很多。用原来的vsftpd没有累死。所以找了一个稍微差不多好用的proftpd,用起来感觉还不错。下来写以下大概的配置。
这里我使用的是proftpd-1.3.0.tar.bz2,建议使用1.2.10以上版本,至于为什么我们后面再说。
ok,我们先安装mysql5
ok成功了!
接下来我们编译proftpd,做这个之前首先修改一下配置(因为我的mysql是自己编译的所以需要)
添加下面一行:
然后使用
生效!
接下来开始proftpd的过程了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
找到#include 这一行,将mysql.h改成你的系统中此文件所在的路径,如
incldue </usr/local/mysql/include/mysql/mysql.h>
接下来编译proftpd
如果是tar安装的
如果是rpm安装的
这里我使用的是proftpd-1.3.0.tar.bz2,建议使用1.2.10以上版本,至于为什么我们后面再说。
ok,我们先安装mysql5
./configure =/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql
make
make install
make clean
/usr/local/mysql/bin/mysql_install_db install
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
/usr/local/mysql/bin/mysqld_safe --user=root &
/usr/local/mysql/bin/mysqladmin -u root -p password 123456
/usr/local/mysql/bin/mysql -u root -p
123456
make
make install
make clean
/usr/local/mysql/bin/mysql_install_db install
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
/usr/local/mysql/bin/mysqld_safe --user=root &
/usr/local/mysql/bin/mysqladmin -u root -p password 123456
/usr/local/mysql/bin/mysql -u root -p
123456
ok成功了!
接下来我们编译proftpd,做这个之前首先修改一下配置(因为我的mysql是自己编译的所以需要)
添加下面一行:
/usr/local/mysql/lib/mysql
然后使用
ldconfig
生效!
接下来开始proftpd的过程了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cd proftpd-1.3.0
cd contrib/
vi mod_sql_mysql.c
找到#include 这一行,将mysql.h改成你的系统中此文件所在的路径,如
incldue </usr/local/mysql/include/mysql/mysql.h>
接下来编译proftpd
如果是tar安装的
./configure --prefix=/usr/local/proftpd --with-modules=mod_sql:mod_sql_mysql --with-includes=/usr/local/mysql/include/mysql --with-libraries=/usr/local/mysql/lib/mysql
如果是rpm安装的
./configure -with-modules=mod_sql:mod_sql_mysql \
-with-includes=/usr/include/mysql \
-with-libraries=/usr/lib/mysql
-with-includes=/usr/include/mysql \
-with-libraries=/usr/lib/mysql
make
make install
下来我们就可以启动proftpd了
如果想要支持断点续传
1.如果这个时候出现错误,说如果找不到nogroup这个组,那么修改/usr/local/proftpd/etc/proftpd.conf
找到Group nogroup
修改为Group ftpgrp
ftpgrp这个组是我提前建立的,就是ftp组。建立方 法
建立FTPGRP组:
groupadd –g 1000 –r ftpgrp
然后就可以通过ftp连接,匿名用户和linux系统帐户都可以连接的!!!
2.我现在说下为什么不使用1.2.10以前版本。我开始使用1.2.9在centos4编译会抱错,大概就是对proftpd的lib个src目录不能正常make,do nothing for 'lib',我也查过资料,有人说安装zlib,但是依旧没有用。有个补丁,找了半天没有找到,不如直接安装新版本!大家可以自己看着办!
好了!说了这么多下面最主要的就是使用mysql+proftpd+mod_sql进行用户验证!这样可以提高安全性!
ok
1. 我们开始创建ftp用户和ftp组!以后mysql的所有用户都影射到ftp用户上!
先建立FTPGRP组:
groupadd –g 1000 –r ftpgrp
建立FTPUSR用户:
adduser –u 1000 –g 1000 –d /home/ftp –s /bin/bash –r ftpuse
为FTPUSR建立HOME,把所有的FTP user 活动空间全放在此目录下:
mkdir /home/ftp
chown FTPUSR /home/ftp
chgrp ftpgrp /home/ftp
2.我们需要给mysql里面创建ftp这个数据库(以后这个数据库就是所有的ftp帐户的信息),然后再ftp这个数据库里面创建两个表,一个是ftpusers,一个是ftpgrp
#===============================================================================
创建ftpusers表
插入数据
#===============================================================================
创建ftpgrp表
插入数据
#===============================================================================
3。我们开始修改proftpd.conf的配置文件!
#==========================================
1.修改
SQLConnectInfo dbname@host:port username password
为你的数据库的相应连接参数。我的就是ftp@localhost root 123456
2.修改
SQLUserInfo ftpusers username password uid gid NULL NULL
改为
SQLUserInfo ftpusers userid passwd uid gid home shell
这是使用FTP帐号的表名和字段名。
3.在
SQLDefaultHomedir /tmp
的行首加上#注释符。
4.将
# SQLGroupInfo groups groupname gid members
前面的#注释符去掉,这是组信息。另外将groups修改为ftpgrp,因为这个是我刚创建的数据库里面的ftpgrp这个表,和里面的字段
自己看着修改
如果不需要匿名登录,将
<Anonymous ~ftp>;
到
</Anonymous>;
之间的内容前都加上#注释符。
5.将
Group nobody
改为
Group ftpgrp
将
User nobody
修改
user ftpusers
#====================================================
4.启动proftpd
可能这个时候你用ftp客户端软件连不上,注意你的ftp帐户的user1,在/home/ftp/下面应该有它的目录,没有的话创建就好了!注意修改属主属组为ftpusers:ftpgrp
ok下来就基本完成了!!
可能还会有朋友遇到很多问题!编译问题查看下版本,环境设置(例如 gcc的安装),mysql数据库的路径
连接不上可以分开来测试,用系统帐户连接(不需要mysql支持),用mysql的用户连接。还有修改proftpd.conf的配置文件,数据库名是否正确,字段名是否和你自己创建的一样,是否在表中插入数据,插入的数据是否和配置文件搭配,是否给了目录权限属性
有问题法上来一起讨论!~~~~~~~
make install
下来我们就可以启动proftpd了
如果想要支持断点续传
1.如果这个时候出现错误,说如果找不到nogroup这个组,那么修改/usr/local/proftpd/etc/proftpd.conf
找到Group nogroup
修改为Group ftpgrp
ftpgrp这个组是我提前建立的,就是ftp组。建立方 法
建立FTPGRP组:
groupadd –g 1000 –r ftpgrp
然后就可以通过ftp连接,匿名用户和linux系统帐户都可以连接的!!!
2.我现在说下为什么不使用1.2.10以前版本。我开始使用1.2.9在centos4编译会抱错,大概就是对proftpd的lib个src目录不能正常make,do nothing for 'lib',我也查过资料,有人说安装zlib,但是依旧没有用。有个补丁,找了半天没有找到,不如直接安装新版本!大家可以自己看着办!
好了!说了这么多下面最主要的就是使用mysql+proftpd+mod_sql进行用户验证!这样可以提高安全性!
ok
1. 我们开始创建ftp用户和ftp组!以后mysql的所有用户都影射到ftp用户上!
先建立FTPGRP组:
groupadd –g 1000 –r ftpgrp
建立FTPUSR用户:
adduser –u 1000 –g 1000 –d /home/ftp –s /bin/bash –r ftpuse
为FTPUSR建立HOME,把所有的FTP user 活动空间全放在此目录下:
mkdir /home/ftp
chown FTPUSR /home/ftp
chgrp ftpgrp /home/ftp
2.我们需要给mysql里面创建ftp这个数据库(以后这个数据库就是所有的ftp帐户的信息),然后再ftp这个数据库里面创建两个表,一个是ftpusers,一个是ftpgrp
#===============================================================================
创建ftpusers表
CODE:
create database FTP;
use FTP;
create table FTPUSERS (
userid TEXT NOT NULL,
passwd TEXT NOT NULL,
uid INT NOT NULL,
gid INT NOT NULL,
home TEXT,
shell TEXT
);
use FTP;
create table FTPUSERS (
userid TEXT NOT NULL,
passwd TEXT NOT NULL,
uid INT NOT NULL,
gid INT NOT NULL,
home TEXT,
shell TEXT
);
插入数据
CODE:
INSERT INTO FTPUSERS (userid, passwd, uid, gid, home, shell)
VALUES (‘user1’, ‘123456’, ‘1000’, ‘1000’, ‘/home/ftp/user1’, ‘’);
VALUES (‘user1’, ‘123456’, ‘1000’, ‘1000’, ‘/home/ftp/user1’, ‘’);
#===============================================================================
创建ftpgrp表
CODE:
CREATE TABLE ftpgrp (
groupname varchar(255) binary NOT NULL default '',
gid int(11) NOT NULL default '0',
members text NOT NULL,
PRIMARY KEY (groupname);
groupname varchar(255) binary NOT NULL default '',
gid int(11) NOT NULL default '0',
members text NOT NULL,
PRIMARY KEY (groupname);
插入数据
CODE:
INSERT INTO ftpgrp VALUES ('ftpgroup', '1000', 'ftpusers');
#===============================================================================
3。我们开始修改proftpd.conf的配置文件!
CODE:
mv /usr/local/proftpd/etc/proftpd.conf /usr/local/proftpd/etc/proftpd.bak
CODE:
cp /usr/local/src/proftpd-1.3.10/sample-configurations/mod_sql.conf /usr/local/proftpd/etc/proftpd.conf
CODE:
vi /usr/local/proftpd/etc/proftpd.conf
#==========================================
1.修改
SQLConnectInfo dbname@host:port username password
为你的数据库的相应连接参数。我的就是ftp@localhost root 123456
2.修改
SQLUserInfo ftpusers username password uid gid NULL NULL
改为
SQLUserInfo ftpusers userid passwd uid gid home shell
这是使用FTP帐号的表名和字段名。
3.在
SQLDefaultHomedir /tmp
的行首加上#注释符。
4.将
# SQLGroupInfo groups groupname gid members
前面的#注释符去掉,这是组信息。另外将groups修改为ftpgrp,因为这个是我刚创建的数据库里面的ftpgrp这个表,和里面的字段
自己看着修改
如果不需要匿名登录,将
<Anonymous ~ftp>;
到
</Anonymous>;
之间的内容前都加上#注释符。
5.将
Group nobody
改为
Group ftpgrp
将
User nobody
修改
user ftpusers
#====================================================
4.启动proftpd
CODE:
/usr/local/proftpd/sbin/proftpd
可能这个时候你用ftp客户端软件连不上,注意你的ftp帐户的user1,在/home/ftp/下面应该有它的目录,没有的话创建就好了!注意修改属主属组为ftpusers:ftpgrp
ok下来就基本完成了!!
可能还会有朋友遇到很多问题!编译问题查看下版本,环境设置(例如 gcc的安装),mysql数据库的路径
连接不上可以分开来测试,用系统帐户连接(不需要mysql支持),用mysql的用户连接。还有修改proftpd.conf的配置文件,数据库名是否正确,字段名是否和你自己创建的一样,是否在表中插入数据,插入的数据是否和配置文件搭配,是否给了目录权限属性
有问题法上来一起讨论!~~~~~~~
BIND架设DNS全过程~~把自己的使用得经验贴出来!不对的地方大家只出来
Proftpd需要注意的地方————转载
2007/12/07 12:21 | by



