前言

在Linux系统中,FTP服务器软件有很多,都已经成熟,像vsftpd, wu-ftp, Pure-FTPd等。但这些软件安装配置起来都比较麻烦,搭建个人的FTP服务器,还是Proftpd比较简单。

目录

  1. Proftpd介绍
  2. Proftpd安装
  3. Proftpd配置文件
  4. Proftpd使用场景
  5. 客户端访问

1. Proftpd介绍

Proftpd是一款开放源码的FTP服务器软件,它是原来世界范围使用最广泛的wu-ftpd的改进版,它修正了wu-ftpd的许多缺陷,在许多方面进行了重大的改进,其中一个重要变化就是它学习了Apache 的配置方式,使proftpd的配置和管理更加简单易懂。

有两种运行方式,独立服务器与超级服务器的子服务器。无论从安全性和稳定性,还是可配置性来说都是非常好的选择。

官方网站:http://www.proftpd.org/

2. Proftpd安装

系统环境

  • Linux
    Ubuntu 12.04.2 LTS 64bit server

安装Proftpd

~ sudo apt-get install proftpd

<h

选择“standalone”

查看proftpd状态

~ sudo /etc/init.d/proftpd status

ProFTPD is started in standalone mode, currently running.

~ ps -aux|grep ftp

proftpd   6674  0.0  0.1  94648 
2092 ?        Ss  
16:05   0:00 proftpd: (accepting connections)

#启动端口21

~ netstat -nltp|grep 21

tcp6      
0      0
:::21                  
:::*                   
LISTEN      -

3. Proftpd配置文件

配置文件:/etc/proftpd/proftpd.conf

#配置服务器名

ServerName           
""blog.fens.me FTP Server"

#设置服务器运行模式,独立服务,或者被监管

ServerType           
standalone

#设置为默认服务器

DefaultServer           
on

#设置服务器进程运行使用的用户

User               
proftpd

#设置服务器进程运行使用的组

Group                   
nogroup

#设置关闭IPv6支持

UseIPv6                   
off

#设置服务器接受请求的端口

Port               
21

#设置被动模式使用的端口范围

PassivePorts            
60000 65535

#设置用户上传文件的权限掩码

Umask               
022

#设置用户被chroot锁定到的各自的Home目录

DefaultRoot           
/ftp

#关闭欢迎信息显示

DeferWelcome           
off

#如果显示欢迎信息,则指定显示的文件

DisplayLogin           
welcome.msg

#指定切换文件夹时,显示的欢迎信息

DisplayChdir           
.message

#设置日志

SystemLog                      
/var/log/proftp.log

TransferLog                    
/var/log/proftp-transfer.log

#限定操作

<Limit SITE_CHMOD>

DenyAll

</Limit>

#设置匿名用户资源

<Anonymous "/ftp/c">

...

</Anonymous>

#配置存储目录权限

<Directory "/ftp/a/" >

<Limit ALL>

AllowUser x

AllowUser a1

DenyAll

</Limit>

<Limit CWD READ RETR DIRS>

AllowAll

</Limit>

</Directory>

Limit权限说明:

  • CWD
    : Change Working Directory 进入该目录
  • MKD
    : Make Directory 创建目录
  • RNFR
    : Rename from 更名
  • DELE
    : Delete 删除文件
  • RMD
    : Remove Directory 删除目录
  • READ
    : 可读
  • WRITE: 可写
  • STOR
    : 可上传
  • RETR
    : 可下载
  • DIRS
    : 允许列出目录
  • LOGIN: 允许登录
  • ALL
    : 全部

4. Proftpd使用场景

场景描述:某公司建立统一的FTP服务器(/ftp),公司有a部门(/ftp/a),b两个部门(/ftp/b),有独立的存储空间。

a1为a部门经理有对(/ftp/a)操作权限,a2为a部门员工只能读文件。

b1为b部门经理有对(/ftp/b)操作权限,b2为b部门员工只能读文件。

x为公司总经理,有对(/ftp)操作权限。

操作权限:

/ftp    -- x所有操作

/ftp/a  -- a1所有操作, a2只读

/ftp/b  -- b1所有操作, b2只读

命令操作:

# 创建FTP目录

sudo mkdir /ftp

sudo mkdir /ftp/a

sudo mkdir /ftp/b

# 创建用户组

sudo groupadd a

sudo groupadd b

Ubuntu系统配置nologin,与其他Linux稍有不同

~  sudo vi /etc/shells

# /etc/shells: valid login shells

/bin/sh

/bin/dash

/bin/bash

/bin/rbash

/usr/bin/tmux

/usr/bin/screen

/usr/sbin/nologin

最后一行增加/usr/sbin/nologin

创建用户并设置nologin, 禁止FTP账户登陆

sudo useradd a1 -g a -s /usr/sbin/nologin

sudo useradd a2 -g a -s /usr/sbin/nologin

sudo useradd b1 -g b -s /usr/sbin/nologin

sudo useradd b2 -g b -s /usr/sbin/nologin

sudo useradd x -G a,b -s /usr/sbin/nologin

#设置账户密码

echo -e "a1:123" | sudo chpasswd

echo -e "a2:123" | sudo chpasswd

echo -e "b1:123" | sudo chpasswd

echo -e "b2:123" | sudo chpasswd

echo -e "x:123" | sudo chpasswd

#设置目录权限

sudo chown x /ftp

sudo chown a1:a /ftp/a

sudo chmod 770 /ftp/a

sudo chmod g+s /ftp/a

sudo chown b1:b /ftp/b

sudo chmod 770 /ftp/b

sudo chmod g+s /ftp/b

修改配置文件:/etc/proftpd/proftpd.conf

~ sudo vi /etc/proftpd/proftpd.conf

ServerName "blog.fens.me FTP Server"

ServerType standalone

DefaultServer on

Port 21

Umask 022

MaxInstances 30

User proftpd

Group nogroup

DefaultRoot /ftp

AllowOverwrite on

SystemLog /var/log/proftp.log

TransferLog /var/log/proftp-transfer.log

<Directory "/ftp/*">

<Limit CWD READ>

AllowAll

</Limit>

</Directory>

<Directory "/ftp/a/" >

<Limit ALL>

AllowUser x

AllowUser a1

DenyAll

</Limit>

<Limit CWD READ RETR DIRS>

AllowAll

</Limit>

</Directory>

<Directory "/ftp/b/" >

<Limit ALL>

AllowUser x

AllowUser b1

DenyAll

</Limit>

<Limit CWD READ RETR DIRS>

AllowAll

</Limit>

</Directory>

<Limit SITE_CHMOD>

DenyAll

</Limit>

重新服务器

~ sudo /etc/init.d/proftpd restart

* Stopping ftp server
proftpd        [ OK ]

* Starting ftp server proftpd

5. 客户端访问

客户端命令行:Win7 64bit Command

模拟a1用户登陆:

~ ftp

#建立连接

ftp> open 192.168.1.201

连接到 192.168.1.201。

220 ProFTPD 1.3.4a Server (blog.fens.me FTP Server)
[::ffff:192.168.1.201]

用户(192.168.1.201:(none)): a1

331 Password required for a1

密码:

230 User a1 logged in

#查看目录

ftp> dir

200 PORT command successful

150 Opening ASCII mode data connection for file list

drwxrws---   2 a1      
a            4096
Nov  3 12:59 a

drwxrws---   2 b1      
b            4096
Nov  3 12:25 b

226 Transfer complete

ftp: 收到 116 字节,用时 0.00秒 58.00千字节/秒。

ftp> cd a

250 CWD command successful

ftp> pwd

257 "/a" is the current directory

ftp> dir

200 PORT command successful

150 Opening ASCII mode data connection for file list

-rw-r--r--   1 a2      
a           55723 Nov  3
12:56 36kryunjiasu.docx

-rw-r--r--   1 a1      
a              
4 Nov  3 12:24 test.txt

226 Transfer complete

ftp: 收到 139 字节,用时 0.00秒 69.50千字节/秒。

#上传文件

ftp> put c:\22.log

200 PORT command successful

150 Opening ASCII mode data connection for 22.log

226 Transfer complete

ftp: 发送 120 字节,用时 0.06秒 2.18千字节/秒。

#下载文件

ftp> get test.txt

200 PORT command successful

150 Opening ASCII mode data connection for test.txt (4 bytes)

226 Transfer complete

ftp: 收到 5 字节,用时 0.00秒 5000.00千字节/秒。

#尝试访问B目录,出错

ftp> cd ../b

550 ../b: No such file or directory

#退出

ftp> bye

221 Goodbye.

模拟a2用户登陆:

~ ftp

#建立连接

ftp> open 192.168.1.201

连接到 192.168.1.201。

220 ProFTPD 1.3.4a Server (blog.fens.me FTP Server)
[::ffff:192.168.1.201]

用户(192.168.1.201:(none)): a2

331 Password required for a2

密码:

230 User a2 logged in

#查看目录

ftp> dir

200 PORT command successful

150 Opening ASCII mode data connection for file list

drwxrws---   2 a1      
a            4096
Nov  3 13:09 a

drwxrws---   2 b1      
b            4096
Nov  3 12:25 b

226 Transfer complete

ftp: 收到 116 字节,用时 0.00秒 116.00千字节/秒。

#上传文件,出错

ftp> put c:\11.log

200 PORT command successful

550 11.log: Operation not permitted

#下载文件

ftp> get 22.log

200 PORT command successful

150 Opening ASCII mode data connection for 22.log (114 bytes)

226 Transfer complete

ftp: 收到 120 字节,用时 0.00秒 120000.00千字节/秒。

用Proftpd我们快速建立了一个公司内部的FTP服务器,比wu-ftpd要方便。

转载请注明出处:

http://blog.fens.me/linux-ftp-proftpd/

Proftpd快速搭建FTP服务器的更多相关文章

  1. CentOS 6.5下快速搭建ftp服务器[转]

    CentOS 6.5下快速搭建ftp服务器 1.用root 进入系统 2.使用命令 rpm -qa|grep vsftpd 查看系统是否安装了ftp,若安装了vsftp,使用这个命令会在屏幕上显示vs ...

  2. CentOS 6.5下快速搭建ftp服务器

    来源:Linux社区 作者:Linux CentOS 6.5下快速搭建ftp服务器 1.用root 进入系统 2.使用命令 rpm -qa|grep vsftpd 查看系统是否安装了ftp,若安装了v ...

  3. linux系统快速搭建ftp服务器——实现匿名用户和创建用户访问服务器

    一.准备工作: linux系统为CentOS Linux release 7.5.1804 (Core)  可以使用 lsb_release -a  命令查看 window系统中安装 SecureCR ...

  4. 快速搭建FTP服务器

    快速搭建一个本地的FTP服务器  如果需要开发FTP文件上传下载功能,那么需要在本机上搭建一个本地FTP服务器,方便调试.第一步:配置IIS Web服务器1.1 控制面板中找到“程序”并打开 1.2 ...

  5. Linux平台下快速搭建FTP服务器

      FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是一个应用程序 ...

  6. 1 Linux平台下快速搭建FTP服务器 win7下如何建立ftp服务器

    百度经验连接(亲测可用) http://jingyan.baidu.com/article/380abd0a77ae041d90192cf4.html win7下如何建立ftp服务器 http://j ...

  7. Linux快速搭建FTP服务器

    FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(A ...

  8. vsftp快速搭建ftp服务器

    什么是vsftp: vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面.它支持很多其他的 FT ...

  9. CentOS 5.8下快速搭建FTP服务器

    学习安装和配置vsftpd: 实验环境:CentOS 5.8 x86_64 测试环境关掉防火墙和selinux. service iptables stop setenforce 0 1.安装vsft ...

随机推荐

  1. 关于ios 和 android 录音(语音)对聊文件格式问题

    关于ios 和 android 录音(语音)对聊文件格式问题 在做语音对讲的时候,将会碰到录制语音格式的问题,这些需要跨平台我们可能需要使用双方平台都支持的格式,或者执行编码转换 解决方式如下: wa ...

  2. quarz spring boot

    package com.pkfare.task.manage.config; import org.quartz.spi.TriggerFiredBundle; import org.springfr ...

  3. webdriver高级应用- 启动带有用户配置信息的firefox浏览器窗口

    由于WebDriver启动FireFox浏览器时会启用全新的FireFox浏览器窗口,导致当前机器的FireFox浏览器已经配置的信息在测试中均无法生效,例如已经安装的浏览器插件.个人收藏夹等.为了解 ...

  4. redis安装、配置和启动

    一.运行环境 1.vmware虚拟机上的centos7系统,安装步骤略,网上搜搜就有,连接工具:secureCRT 2.新安装的linux,是没有wget命令,所以先执行这个命令安装下:yum -y ...

  5. HashSet源码分析 jdk1.6

    Set的特点:Set元素无顺序,且元素不可以重复. 1.定义 public class HashSet<E> extends AbstractSet<E> implements ...

  6. 【Luogu】P3705新生舞会(费用流+分数规划+二分答案)

    题目链接 本来以为自己可以做出来,结果……打脸了 (貌似来wc立了好几个flag了,都没竖起来) 不过乱蒙能蒙出一个叫“分数规划”的东西的式子还是很开心的 观察$C=\frac{a_{1}+a_{2} ...

  7. Foj 2148 二维几何(点是否在三角形内)

    题目大意:给n个坐标(不存在三点共线的点),求能够组成多少个凸四边形. #include<iostream> #include<cstdio> #include<cmat ...

  8. 区间合并 POJ3667+HDU4553

    两道题都是线段树的区间合并 lsum, rsum分别表示左/右端点 开始向右/左 符合条件的元素的最长连续长度 sum表示这个区间的符合条件的元素的最长连续长度 所以pushUp可写: void pu ...

  9. 洛谷 P 3379 【模板】最近公共祖先(LCA)

    题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每 ...

  10. 【NOIP2016】愤怒的小鸟(状压DP)

    题意: Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形如 ...