下午由于帮一个客户搞一个ftp服务器,由于权限复杂,账户很多。用原来的vsftpd没有累死。所以找了一个稍微差不多好用的proftpd,用起来感觉还不错。下来写以下大概的配置。
这里我使用的是proftpd-1.3.0.tar.bz2,建议使用1.2.10以上版本,至于为什么我们后面再说。

ok,我们先安装mysql5

CODE:
./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

ok成功了!




接下来我们编译proftpd,做这个之前首先修改一下配置(因为我的mysql是自己编译的所以需要)

CODE:
vi /etc/ld.so.conf

添加下面一行:
/usr/local/mysql/lib/mysql

然后使用

ldconfig

生效!

接下来开始proftpd的过程了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

tar jvxf proftpd-1.3.0.tar.bz2



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



make

make install



下来我们就可以启动proftpd了

/usr/local/proftpd/sbin/proftpd

如果想要支持断点续传

vi proftpd.conf
AllowRetrieveRestart on
AllowStoreRestart on

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表

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
);

插入数据

INSERT INTO FTPUSERS (userid, passwd, uid, gid, home, shell)
VALUES (‘user1’, ‘123456’, ‘1000’, ‘1000’, ‘/home/ftp/user1’, ‘’);

#===============================================================================

创建ftpgrp表

CREATE TABLE ftpgrp (
groupname varchar(255) binary NOT NULL default '',
gid int(11) NOT NULL default '0',
members text NOT NULL,
PRIMARY KEY (groupname);

插入数据

INSERT INTO ftpgrp VALUES ('ftpgroup', '1000', 'ftpusers');

#===============================================================================

3。我们开始修改proftpd.conf的配置文件!

mv /usr/local/proftpd/etc/proftpd.conf /usr/local/proftpd/etc/proftpd.bak



cp /usr/local/src/proftpd-1.3.10/sample-configurations/mod_sql.conf /usr/local/proftpd/etc/proftpd.conf



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

/usr/local/proftpd/sbin/proftpd

可能这个时候你用ftp客户端软件连不上,注意你的ftp帐户的user1,在/home/ftp/下面应该有它的目录,没有的话创建就好了!注意修改属主属组为ftpusers:ftpgrp

ok下来就基本完成了!!


可能还会有朋友遇到很多问题!编译问题查看下版本,环境设置(例如 gcc的安装),mysql数据库的路径

连接不上可以分开来测试,用系统帐户连接(不需要mysql支持),用mysql的用户连接。还有修改proftpd.conf的配置文件,数据库名是否正确,字段名是否和你自己创建的一样,是否在表中插入数据,插入的数据是否和配置文件搭配,是否给了目录权限属性


有问题法上来一起讨论!~~~~~~~

技术资料 » linux相关 | 评论(0) | 引用(0) | 阅读(454)
 
发表评论
   
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写