Centos 通过 Yum 安装 Pure-ftpd 步骤

通过Yum安装Pure-ftpd的详细步骤如下:

步骤一:配置yum源

备份(如有配置其他epel源)

mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup

下载新repo 到/etc/yum.repos.d/

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

yum makecache

 

步骤二:yum安装
yum install pure-ftpd -y

 

步骤三:修改配置文件
vim /etc/pure-ftpd/pure-ftpd.conf

PureDB /etc/pure-ftpd/pureftpd.pdb
#去掉这行注释,指定路径,PureDB用户数据库文件
VerboseLog yes
#开启日志  /var/log/pureftpd.log
NoAnonymous yes
#拒绝匿名用户登录
PassivePortRange 48000 50000
#使用被动模式,限制端口。

 

步骤四:创建账户,配置权限
groupadd ftpgroup
useradd -g ftpgroup -s /sbin/nologin -d /dev/null ftpuser
创建虚拟账户
pure-pw useradd test -d /data/ftp/ -u ftpuser -m
配置目录权限
mkdir /data/ftp -p
chown ftpuser.ftpgroup /data/ftp/ -R

 

步骤五:配置防火墙策略
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 48000:50000 -j ACCEPT

 

步骤六:启动pure-ftpd

chkconfig pure-ftpd --level 345 on
/etc/init.d/pure-ftpd start

CentOS 5.5 x86_64下安装配置pure-ftpd

pure-ftpd介绍
pure-ftpd大家应该都听说过,一个很好用的ftp服务端。功能很多,也比较安全,而且还可以和mysql整合,通过mysql建立和验证帐户,并实现流量限制、磁盘配额限制等功能。这就说明,可以通过自己开发的PHP程序来实现Web管理。其它的功能,大家可以到官网上去看。
Yum安装pure-ftpd遇到的问题
CentOS装软件最简单的办法就是用yum了。所以我毫不犹豫地yum install pure-ftpd。找到的也是x86_64的,心想肯定不会有问题。安装完之后,/etc/init.d/pure-ftpd start运行一下,发现[failed],启动失败。查看一下服务器日志:
tail -n 200 /var/log/messages | grep ftp
如果您看到了下面的错误:
pure-ftpd: (?@?) [ERROR] Unable to switch capabilities : Operation not permitted
那么恭喜您,您遇到了和我一样的问题(这是什么话……)。这会出现于基于openVZ的vps上。因为这种vps限制一种包libcap.so。这个只能修改母机的设置,在VPS上是不现实的。解决的办法也很简单,自己去下载pure-ftpd的源码包进行编译安装,编译的时候加上?without-capabilities这个参数就行了。具体的命令如下:

wget ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.29.tar.gz
tar zxf pure-ftpd-1.0.29.tar.gz
cd pure-ftpd-1.0.29
./configure --without-capabilities --with-virtualchroot --with-mysql --with-pam --with-altlog --with-mysql --with-cookie --with-throttling --with-ratios --with-paranoidmsg --with-quotas --with-everything
make
make install
pure-ftpd编译的时候遇到的问题
第一个问题
出现如下的错误:

configure: error: PAM headers not found.
解决办法:

yum -y install pam-devel
第二个问题:
我的是CentOS 5.5 x86_64,MySQL也是yum安装的。结果编译pure-ftpd的时候,加了?with-mysql参数之后,编译过程中出现下面的错误:
checking for mysql_init in -lmysqlclient… no
configure: error: libmysqlclient is needed for MySQL support
我很纳闷,怎么会缺少这个,用find命令一搜,能找到呀,在/usr/lib64/mysql/下面,四个库文件老老实实地躺在那儿呢。难道是需要装额外的扩展包?yum search libmysqlclient以下,竟然米有这个。
在GG上一搜,遇到这个问题的人真不少(国内竟然米有相关的文章),可是大家的解决办法无怪乎以下几种:
1、编译的时候不加?with-mysql这个参数(对于我们来说当然不行,要的就是mysql支持)
2、删除mysql、apache、php等,安装一些人编译好的LAMP或LNMP套件,这个不现实,都装好了为啥要删。
3、修改pure-ftpd源码中的configure文件,在mysql那一段加上编译参数。这个只适用于老版本的pure-ftpd,新版的configure文件已经改过了。
4、用ln -s将/usr/lib64/mysql/下面的几个libmysqlclient.so文件指向别的位置,比如/usr/local/mysql、/usr/include等位置,我试了一下,我几乎把这些快捷方式创建到我能创建的任何地方,还是米有用。不过有的人能用了。
5、关闭SElinux和防火墙,试过了,也不行,而且感觉不安全,所以没用之后又打开了。
……
总之,网上的一些办法我都试过了,都不行。
我无意中收到了一个pure-ftpd的rpm包,上面列出了他运行所依赖的库文件,其中就有libmysqlclient,我点进去看了一下,发现Federo有一个专门的mysql库的包。我猜想CentOS是不是应该也有呢。于是,yum search mysql了一下,发现除mysql以外,还有一些其它的在我本机上没有安装,我看到一个为mysql-devel的包,这个应该比较像,尝试安装了一下,再次编译pure-ftpd,顺利通过,太激动了。两天的问题终于解决了。
配置pure-ftpd
接着刚才的./config 之后的:

make
make install
cp pureftpd-mysql.conf /etc/
cp configuration-file/pure-config.pl /usr/local/sbin/
chmod 755 /usr/local/sbin/pure-config.pl
cp configuration-file/pure-ftpd.conf /etc/
cp contrib/redhat.init /etc/rc.d/init.d/pureftpd
chmod u+x /etc/rc.d/init.d/pureftpd
chkconfig --add pureftpd
chkconfig --level 2345 pureftpd on
service pureftpd start
这样是把pure-ftpd安装为一个服务,这样以后使用起来就方便了。启动成功后显示信息如下:
启动 pure-config.pl:Running: /usr/local/sbin/pure-ftpd ?daemonize -A -c50 -B -C8 -D -fftp -H -I15 -lmysql:/etc/pureftpd-mysql.conf -L10000:8 -m4 -s -U133:022 -u100 -j -k99 -Z
pureftpd 安装好了,现在我们开始配置其支持虚拟用户,并把虚拟用户存储在 mysql 中。
首先我们创建 pureftpd 用到的用户组和用户帐户,所有的虚拟帐户都会被映射到这个帐户的目录下。组号和用户号自己定义一个,只要是系统空闲的即可,这里默认写一个2001。

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
创建 pureftpd 数据表并赋予 mysql 权限:

mysql -u root -p
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY '对应的密码';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY '对应的密码';
FLUSH PRIVILEGES;
USE pureftpd;
CREATE TABLE ftpd (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(64) NOT NULL default '',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
看一下表结构

mysql> desc ftpd;
+-------------+---------------+------+-----+---------+-------+
| Field       | Type          | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| User        | varchar(16)   | NO   | PRI |         |       |
| status      | enum('0','1') | NO   |     | 0       |       |
| Password    | varchar(64)   | NO   |     |         |       |
| Uid         | varchar(11)   | NO   |     | -1      |       |
| Gid         | varchar(11)   | NO   |     | -1      |       |
| Dir         | varchar(128)  | NO   |     |         |       |
| ULBandwidth | smallint(5)   | NO   |     | 0       |       |
| DLBandwidth | smallint(5)   | NO   |     | 0       |       |
| comment     | tinytext      | NO   |     | NULL    |       |
| ipaccess    | varchar(15)   | NO   |     | *       |       |
| QuotaSize   | smallint(5)   | NO   |     | 0       |       |
| QuotaFiles  | int(11)       | NO   |     | 0       |       |
+-------------+---------------+------+-----+---------+-------+
12 rows in set (0.02 sec)
数据表说明:
User:帐号名;
status:0 表示帐号被禁用,无法登录服务器;
Password:密码,使用MD5加密;
Uid:前面创建的ftpuser帐户号,我们填写的是2001;
Gid:前面创建的ftpgroup组号,我们填写的是2001;
Dir:虚拟用户的个人目录路径,将在/home下创建(第一次登录);
ULBandwidth:上传文件限制速度,KB/s,0为不限制;
DLBandwidth:下载文件限制速度,KB/s,0为不限制;
comment:备注信息;
ipaccess:* 表示任意IP都可以访问此ftp服务器,输入具体IP地址可以只允许此IP连接服务器;
QuotaSize:用户磁盘空间分配,单位:MB,0表示不加限制;
QuotaFiles:用户可以保存的文件数量限制,0表示不加限制。
编辑/etc/pure-ftpd.conf,确保ChrootEveryone、MySQLConfigFile、CreateHomeDir被开启:

ChrootEveryone              yes
MySQLConfigFile             /etc/pureftpd-mysql.conf
CreateHomeDir               yes
ChrootEveryone 限制每一个虚拟用户在其目录下;
CreateHomeDir 会在ftp用户登录时创建其个人目录。
编辑 /etc/pureftpd-mysql.conf 如下:

MYSQLSocket      /tmp/mysql.sock
#MYSQLServer     localhost
#MYSQLPort       3306
MYSQLUser       pureftpd
MYSQLPassword   这里输入前面给mysql授权时的密码
MYSQLDatabase   pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt      md5
MYSQLGetPW          SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID         SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID         SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir         SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ       SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS       SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
重新启动pureftpd:

service pureftpd restart
创建ftp虚拟用户:

mysql -u root -p
use pureftpd;
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('帐号名', '1', MD5('密码'), '2001', '2001', '/home/路径', '100', '100', '', '*', '50', '0');
quit
这里手动添加sql,实际上可以做一个web页面,申请帐号,管理员后台设置帐号生效等等操作… …该php闪亮登场了… …
现在可以使用你的ftp客户端连接ftp服务器测试一下了。
另附:如何配置匿名ftp访问
修改 /etc/password 如下:

ftp:x:14:50:FTP User:/home/anon_ftp_dir:/sbin/nologin
给匿名访问目录加上权限:

[root@server home]# chmod 755 anon_ftp_dir/
[root@server ~]# ls -dl /home/anon_ftp_dir/
drwxr-xr-x 3 root root 4096 05-31 10:07 /home/anon_ftp_dir/
[root@server ~]# ls -l /home/anon_ftp_dir/
总计 8
drwxr-xr-x 2 root root 4096 05-31 10:07 anon
再登录FTP客户端测试一下吧。

时间: 2024-08-22 14:59:17

Centos 通过 Yum 安装 Pure-ftpd 步骤的相关文章

CentOS本地YUM安装单节点icehouse的异常

问题描述 本人使用CentOS,本地YUM安装单节点icehouse的异常,参考的文章是http://www.2cto.com/os/201410/343246.html下载和执行较顺利,但执行packstack--answer-fileopenstack-install.txt时有如下异常,求解:CopyingPuppetmodulesandmanifests[DONE]Applying192.168.10.30_prescript.pp192.168.10.30_prescript.pp:[

CentOS 下yum安装mysql、jdk和tomcat的方法_Linux

0. 创建个人文件夹 # 使用 yum 安装tomcat 和 mysql # 创建文件夹 cd /usr/local mkdir hehe 1. 安装rzsz # 1. 安装rzsz yum list lrzsz* yum install lrzsz -y 2. 安装JDK,path之类的已经自动设置好了 # 2. 安装JDK yum list java* yum install java-1.7.0-openjdk* -y 3. 安装mysql # 3. 安装mysql yum list my

CentOS用yum安装配置svn服务器步骤

简单的,用yum安装方式: #yum install subversion 安装完成之后,采用以下查看是否安装完成 #svn --version 创建SVN的仓库,比如: #mkdir -p /data/svn #svnadmin create opengeo 然后会发现自动生成conf.db.format.hooks.locks.README.txt等文件或目录. 修改conf目录下的配置文件 在svnserve.conf中,编辑配置为: [general] anon-access = non

CentOS下yum安装缺少kernel-headers的解决方法

  centos出现Missing Dependency :kernel-header 的解决方法,在此记下 错误信息如下: 代码如下: glibc-headers-2.5-81.el5_8.2.x86_64 from updates has depsolving problems --> Missing Dependency: kernel-headers >= 2.2.1 is needed by package glibc-headers-2.5-81.el5_8.2.x86_64 (u

详解Centos 使用YUM安装MariaDB_mariadb

1.在 /etc/yum.repos.d/ 下建立 MariaDB.repo,内容如下: 复制代码 代码如下: [azureuser@mono etc]$ cd /etc/yum.repos.d [azureuser@mono yum.repos.d]$ vi MariaDB.repo # MariaDB 10.0 CentOS repository list - created 2013-08-23 13:08 UTC # http://mariadb.org/mariadb/reposito

CentOS下yum安装lamp(apache+mysql+php)环境

1. 用yum安装Apache,Mysql,Php 1.1 安装Apache  代码如下 复制代码 #yum install httpd httpd-devel 安装完成后,用/etc/init.d/httpd start 启动apache 设为开机启动:  代码如下 复制代码 chkconfig httpd on 1.2 安装mysql 1.2.1 安装  代码如下 复制代码 #yum install mysql mysql-server mysql-devel 同样,完成后,用/etc/in

Centos下Yum安装PHP5.5,5.6,7.0

默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | grep php 如果有安装的PHP包,先删除他们  yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x

CentOS环境下通过YUM安装软件的步骤

为了提升用户在云服务器上的软件安装效率,减少下载和安装软件的成本,腾讯云提供了Yum下载源.在CentOS环境下,用户可通过YUM快速安装软件. 对于Yum下载源,不需要添加软件源,可以直接安装软件包. 1. 安装步骤 1. 登录操作系统为CentOS6.2的云服务器后,默认已获取root权限:注意:严禁执行password命令,root密码默认不能被修改.  2. 在root权限下,通过命令 yum install 来安装软件,示例如下: 3. 系统会自动搜索相关的软件包和依赖关系,并且在界面

Centos 5.8中64位系统yum安装php5.2步骤

由于程序运行环境需要,不得不使用老掉牙的PHP5.2以下版本. 下面提供两种方法安装PHP5.2 操作系统: CentOS 5.8 64位(阿里云空间) 1.通过官方下载源码,编译安装 下载地址:http://museum.php.net/php2/ 编译安装方法,可以解压后看README文本文件. 2.通过第三方的yum源安装php5.2.17 参考方法:https://webtatic.com/packages/php53/ 1)通过rpm -qa |grep php 命令,查看系统已经安装