PureFtpd 服务

1. 概述

  • Pure-FTPd 是一个免费的FTP服务器, 相比较传统的vsftpd 功能更加强大, 性能稳定.
  • 支持多种余元编写客户端程序.
  • 支持使用使用 SSL/TLS 加密.
  • 支持使用数据库存储和管理账户.

2. 安装和配置

2.1 源码包安装

  • 下载源码包并解压
[root@node10009 src]# ls -lh ./pure-ftpd-1.0.47.tar.bz2 
-rw-r--r-- 1 root root 478K Jun  4  2018 ./pure-ftpd-1.0.47.tar.bz2
[root@node10009 src]# tar jxf pure-ftpd-1.0.47.tar.bz2 
[root@node10009 src]# cd pure-ftpd-1.0.47
[root@node10009 pure-ftpd-1.0.47]# 
  • 预编译
[root@node10009 pure-ftpd-1.0.47]# ./configure --prefix=/opt/app/pureftpd --with-capabilities --with-sendfile --with-paranoidmsg --with-altlog --with-puredb --with-pam --with-cookie --with-throttling --with-ratios --with-quotas --with-ftpwho --with-welcomemsg --with-uploadscript --with-vritualhosts --with-diraliases --with-puruserlimits --with-mysql --with-privsep --with-rfc2640 --without-bonjour

  • 编译并安装
[root@node10009 pure-ftpd-1.0.47]# make -j4
...
[root@node10009 pure-ftpd-1.0.47]# make install
...
[root@node10009 pure-ftpd-1.0.47]# ls /opt/app/pureftpd/
bin  etc  sbin  share
  • 安装ftp 客户端
[root@node10009 pureftpd]# yum -y install ftp
...
Installed:
  ftp.x86_64 0:0.17-67.el7

Complete!

2.2 配置

  • 目录以及用户设置
### 添加用户和用户和组
[root@node10009 pureftpd]# groupadd pureftp
[root@node10009 pureftpd]# useradd -g pureftp -d /dev/null -s /sbin/nologin -r pureftp

### 创建目录和 ftp 用户
[root@node10009 pureftpd]# mkdir -p /opt/ftp/share
[root@node10009 pureftpd]# ./bin/pure-pw useradd testuser1 -u pureftp -d /opt/ftp/share/
Password: 
Enter it again: 
  • 编辑配置文件, 指定 用户数据库
[root@node10009 pureftpd]# ./bin/pure-pw mkdb
[root@node10009 pureftpd]# vim etc/pure-ftpd.conf 
    ...
     PureDB                       /opt/app/pureftpd/etc/pureftpd.pdb
    ...
  • 添加测试文件, 并设置好目录权限
[root@node10009 pureftpd]# echo 'hello' > /opt/ftp/share/a.txt 
[root@node10009 pureftpd]# chown -R pureftp. /opt/ftp/share/
  • 启动服务
[root@node10009 pureftpd]# ./sbin/pure-ftpd /opt/app/pureftpd/etc/pure-ftpd.conf 
[root@node10009 pureftpd]# ss -tan | grep 21
LISTEN     0      9            *:21                       *:*                  
LISTEN     0      9           :::21                      :::*                  
[root@node10009 pureftpd]# 

2.3 测试

  • 登陆测试
[root@node10009 pureftpd]# ftp localhost
Trying ::1...
Connected to localhost (::1).
220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 18:23. Server port: 21.
220 You will be disconnected after 15 minutes of inactivity.
Name (localhost:root): testuser1
331 User testuser1 OK. Password required
Password:
230 OK. Current directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
  • 下载测试
ftp> ls
229 Extended Passive mode OK (|||33927|)
150 Accepted data connection
drwxr-xr-x    2 958        pureftp            19 Dec 22 17:45 .
drwxr-xr-x    2 958        pureftp            19 Dec 22 17:45 ..
-rw-r--r--    1 958        pureftp             6 Dec 22 17:45 a.txt
226-Options: -a -l 
226 3 matches total
ftp> get a.txt 
local: a.txt remote: a.txt
229 Extended Passive mode OK (|||44663|)
150 Accepted data connection
226-File successfully transferred
226 0.000 seconds (measured here), 119.30 Kbytes per second
6 bytes received in 2.4e-05 secs (250.00 Kbytes/sec)
ftp> 
  • 上传测试
ftp> put /home/fangfc/b.txt b.txt
local: /home/fangfc/b.txt remote: b.txt
229 Extended Passive mode OK (|||9919|)
150 Accepted data connection
226-File successfully transferred
226 0.000 seconds (measured here), 63.02 Kbytes per second
6 bytes sent in 3.4e-05 secs (176.47 Kbytes/sec)
ftp> ls
229 Extended Passive mode OK (|||41164|)
150 Accepted data connection
drwxr-xr-x    2 958        pureftp            32 Dec 22 18:25 .
drwxr-xr-x    2 958        pureftp            32 Dec 22 18:25 ..
-rw-r--r--    1 958        pureftp             6 Dec 22 17:45 a.txt
-rw-r--r--    1 958        pureftp             6 Dec 22 18:25 b.txt
226-Options: -a -l 
226 4 matches total
ftp> 

3. 配置使用MySQL 登陆

3.1 MySQL 相关设置

  • 创建用于存储pure-ftp 用户 的数据库和数据表
MySQL [(none)] > CREATE  database pureftp DEFAULT CHARACTER SET=utf8;
Query OK, 1 row affected (0.00 sec)

MySQL [(none)] > use pureftp
MySQL [pureftp] > 

CREATE TABLE `ftpuser` (
    `user` VARCHAR(20) NOT NULL,
    `password` VARCHAR(255) NOT NULL,
    `uid` INT NOT NULL default '-1',
    `gid` INT NOT NULL default '-1',
    `dir` VARCHAR(255) NOT NULL,
    `status` TINYINT NOT NULL DEFAULT '0',
    PRIMARY KEY(User)
)ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;

Query OK, 0 rows affected (0.02 sec)
  • 创建 pureftpd 连接数据库的用户.
MySQL [pureftp] > GRANT ALL ON pureftp.* TO 'pureftp'@'127.0.0.1' IDENTIFIED BY 'pureftp';
Query OK, 0 rows affected, 1 warning (0.01 sec)

MySQL [pureftp] > FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)
  • 插入用户数据
MySQL [pureftp] > INSERT INTO `ftpuser`(`user`, `password`, `uid`, `gid`, `dir`,`status`) VALUES('user1', MD5('123'), 958,, 2001
Query OK, 1 row affected (0.01 sec)

MySQL [pureftp] > SELECT * FROM `ftpuser`;
+-------+----------------------------------+-----+-------+----------------+--------+
| user  | password                         | uid | gid   | dir            | status |
+-------+----------------------------------+-----+-------+----------------+--------+
| user1 | 202cb962ac59075b964b07152d234b70 | 958 | 2001 | /opt/ftp/share |      1 |
+-------+----------------------------------+-----+-------+----------------+--------+
1 row in set (0.01 sec)

3.2 修改配置文件

  • 修改主配置文件 /opt/app/pureftp/etc/pure-ftpd.conf
## 1. 注释 PureDB 项
# PureDB                       /opt/app/pureftpd/etc/pureftpd.pdb
...
## 2. 设置 MySQLConfigFile 
 MySQLConfigFile              /opt/app/pureftp/etc/pureftpd-mysql.conf
  • /opt/app/pureftp/etc/pureftp-mysql.conf
MYSQLServer     127.0.0.1
MYSQLPort       3306
MYSQLSocket     /tmp/mysql.sock
MySQLDatabase   pureftp
MYSQLUser       pureftp
MYSQLPassword   pureftp
MySQLCrypt      md5 

MYSQLGetPW SELECT password FROM ftpuser WHERE user ='\L' AND status=1
MYSQLGetUID SELECT uid FROM ftpuser WHERE user ='\L'  AND status=1
MYSQLGetGID SELECT gid FROM ftpuser WHERE user ='\L'  AND status=1
MYSQLGetDir SELECT dir FROM ftpuser WHERE user = '\L' AND status=1

3.3 测试

  • 登陆
[root@node10009 ~]# ftp localhost
Trying ::1...
Connected to localhost (::1).
220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 00:47. Server port: 21.
220 You will be disconnected after 15 minutes of inactivity.
Name (localhost:root): user1
331 User user1 OK. Password required
Password:
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
  • 下载
ftp> ls
229 Extended Passive mode OK (|||16372|)
150 Accepted data connection
drwxr-xr-x    2 958        pureftp            32 Dec 22 18:25 .
drwxr-xr-x    2 958        pureftp            32 Dec 22 18:25 ..
-rw-r--r--    1 958        pureftp             6 Dec 22 17:45 a.txt
-rw-r--r--    1 958        pureftp             6 Dec 22 18:25 b.txt
226-Options: -a -l 
226 4 matches total
ftp> get a.txt /root/test/a.txt
local: /root/test/a.txt remote: a.txt
229 Extended Passive mode OK (|||15025|)
150-Accepted data connection
150 The computer is your friend. Trust the computer
226-File successfully transferred
226 0.000 seconds (measured here), 136.53 Kbytes per second
6 bytes received in 2.3e-05 secs (260.87 Kbytes/sec)
  • 上传
[root@node10009 ~]# mkdir test
[root@node10009 ~]# cd test
[root@node10009 test]# echo 'hello' > abc.txt
...
ftp> put /root/test/abc.txt  abc.txt
local: /root/test/abc.txt remote: abc.txt
229 Extended Passive mode OK (|||58248|)
150 Accepted data connection
226-File successfully transferred
226 0.000 seconds (measured here), 12.13 Kbytes per second
6 bytes sent in 3.3e-05 secs (181.82 Kbytes/sec)
ftp> 

END

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容