前言

在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. 00018_流程控制语句switch

    1.选择结构switch switch 条件语句也是一种很常用的选择语句,它和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码. 2.switch语句的语法格式 swit ...

  2. Maven本地库在哪?

    Maven的本地存储库是一个本地文件夹,用于存储你的所有项目的依赖项(插件Jars和其他Maven下载的文件).简单的说,当你建立一个Maven项目,所有依赖文件将存储在Maven的本地库. 默认情况 ...

  3. Oracle 了解 DDL 操作与 REDO 的关系

    目录 了解 DDL 操作与 REDO 的关系 DDL是否会产生REDO 通过 10046 trace 来分析create 和drop 如果drop失败,redo的变化 了解 DDL 操作与 REDO ...

  4. TCP 中的三次握手和四次挥手

    Table of Contents 前言 数据报头部 三次握手 SYN 攻击 四次挥手 半连接 TIME_WAIT 结语 参考链接 前言 TCP 中的三次握手和四次挥手应该是非常著名的两个问题了,一方 ...

  5. python_字符串,元组,格式化输出

    一.字符串 1.字符串是有成对的单引号或者双引号括起来的.例如:name="张三",sex="女" 2.字符串的索引是从0开始的 3.字符串的切片 a.单个字符 ...

  6. 【LeetCode】Longest Common Prefix(最长公共前缀)

    这道题是LeetCode里的第14道题. 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["f ...

  7. Leetcode 424.替换后的最长重复字符

    替换后的最长重复字符 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 注意:字符串长度 和 ...

  8. 是男人就过 8 题--Pony.AI A AStringGame

    链接:https://www.nowcoder.com/acm/contest/92/A来源:牛客网 AStringGame 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 26214 ...

  9. docker容器为什么可以跨平台部署

    docker镜像和操作系统没关系,docker最大的价值就是提出了镜像打包技术.首先你的明白什么是docker,什么是镜像,什么是容器,然后你就能明白镜像和操作系统之间的关系.docker是一个引擎, ...

  10. python相关——如何安装pip

    今天在新的一台电脑上安装了pip.流程有点忘记了,在这里再次记录下来. 本教程基于python3.4,并且需要连接互联网,总共需要两步. 1.要安装pip,首先要安装setuptools,链接:htt ...