前言

在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. day06 面向对象编程

    面向对象: 面向对象: 世界万物,皆可分类 世界万物,皆为对象   只要是对象,就肯定属于某种品类 只要是对象,就肯定有属性         特性: 多态: 一个统一的接口,多种实现  例如:  一个 ...

  2. Linux内存cache/buffer剖析

    查询linux系统中空闲内存/内存使用状态查看/剩余内存查看 如何计算内存的使用量及空闲量 物理已用内存 = 实际已用内存 - 缓冲 - 缓存              =  24752  - 283 ...

  3. MIME类型-服务端验证上传文件的类型

    MIME的作用 : 使客户端软件,区分不同种类的数据,例如web浏览器就是通过MIME类型来判断文件是GIF图片,还是可打印的PostScript文件. web服务器使用MIME来说明发送数据的种类, ...

  4. foy: 轻量级的基于 nodejs 的通用 build 工具

    npm 的 scripts 下写的命令太多就很容易很乱,各种第三方轮子都只能解决一部分问题,总感觉不是很好用,想找个类似 make 的工具只能找到 jake, 可是 jake 的 API 太老,居然很 ...

  5. python基础补漏-07-正则表达式

    字符: .    匹配除了换行符以外的任意字符 \w  匹配字母或者数字或下划线或汉字(除了特殊字符外都能匹配) \s   匹配任意空白符 \d 匹配数字 \b 匹配单词的开始或者结束 ^ 匹配字符串 ...

  6. python递归函数、二分法、匿名函数、(sorted、map、filter内置函数应用)

    #函数递归是一种特殊的函数嵌套调用,在调用一个函数的过程中,又直接或间接的调用该函数本身递归必须要有两个明确的阶段: 递推:一层一层递归调用下去,强调每进入下一层递归问题的规模都必须有所减少 回溯:递 ...

  7. WebApplicationContextUtils源码

    package org.springframework.web.context.support; import javax.servlet.ServletContext; import javax.s ...

  8. NOJ——1568走走走走走啊走(超级入门DP)

    [1568] 走走走走走啊走 时间限制: 1000 ms 内存限制: 65535 K 问题描述 菜菜赚了钱回来,想起要买很多桶回来,不同地方的桶质量是不同的,他在(1,1)点出发因为飞机票有点贵所以他 ...

  9. docker 容器详解

    Docker 是一个开源的应用容器引擎,基于Go语言 并遵Apache2.0协议开源,也是一种虚拟化技术.让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux ...

  10. 如何回答“线上CPU100%排查”面试问题

    案例: public class App { public static void main( String[] args ) { int a = 0; while (a < 100) { a ...