Proftpd快速搭建FTP服务器
前言
在Linux系统中,FTP服务器软件有很多,都已经成熟,像vsftpd, wu-ftp, Pure-FTPd等。但这些软件安装配置起来都比较麻烦,搭建个人的FTP服务器,还是Proftpd比较简单。
目录
- Proftpd介绍
- Proftpd安装
- Proftpd配置文件
- Proftpd使用场景
- 客户端访问
1. Proftpd介绍
Proftpd是一款开放源码的FTP服务器软件,它是原来世界范围使用最广泛的wu-ftpd的改进版,它修正了wu-ftpd的许多缺陷,在许多方面进行了重大的改进,其中一个重要变化就是它学习了Apache 的配置方式,使proftpd的配置和管理更加简单易懂。
有两种运行方式,独立服务器与超级服务器的子服务器。无论从安全性和稳定性,还是可配置性来说都是非常好的选择。
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要方便。
Proftpd快速搭建FTP服务器的更多相关文章
- CentOS 6.5下快速搭建ftp服务器[转]
CentOS 6.5下快速搭建ftp服务器 1.用root 进入系统 2.使用命令 rpm -qa|grep vsftpd 查看系统是否安装了ftp,若安装了vsftp,使用这个命令会在屏幕上显示vs ...
- CentOS 6.5下快速搭建ftp服务器
来源:Linux社区 作者:Linux CentOS 6.5下快速搭建ftp服务器 1.用root 进入系统 2.使用命令 rpm -qa|grep vsftpd 查看系统是否安装了ftp,若安装了v ...
- linux系统快速搭建ftp服务器——实现匿名用户和创建用户访问服务器
一.准备工作: linux系统为CentOS Linux release 7.5.1804 (Core) 可以使用 lsb_release -a 命令查看 window系统中安装 SecureCR ...
- 快速搭建FTP服务器
快速搭建一个本地的FTP服务器 如果需要开发FTP文件上传下载功能,那么需要在本机上搭建一个本地FTP服务器,方便调试.第一步:配置IIS Web服务器1.1 控制面板中找到“程序”并打开 1.2 ...
- Linux平台下快速搭建FTP服务器
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是一个应用程序 ...
- 1 Linux平台下快速搭建FTP服务器 win7下如何建立ftp服务器
百度经验连接(亲测可用) http://jingyan.baidu.com/article/380abd0a77ae041d90192cf4.html win7下如何建立ftp服务器 http://j ...
- Linux快速搭建FTP服务器
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(A ...
- vsftp快速搭建ftp服务器
什么是vsftp: vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面.它支持很多其他的 FT ...
- CentOS 5.8下快速搭建FTP服务器
学习安装和配置vsftpd: 实验环境:CentOS 5.8 x86_64 测试环境关掉防火墙和selinux. service iptables stop setenforce 0 1.安装vsft ...
随机推荐
- Nginx快速安装
登录nginx官网,点击download 点击稳定版本 复制箭头上面的内容 vim /etc/yum.repos.d/nginx.repo 修改yum文件 将复制的内容粘贴上去 yum list | ...
- zuul session 不一致的问题
配置文件: #不加这句话导致session不一致zuul.routes.intelligentsia-authority.sensitiveHeaders = Authorization 过滤器里面 ...
- python学习--python 连接SQLServer数据库(两种方法)
1. python 学习.安装教程参照: http://www.runoob.com/python/python-tutorial.html 2. 集成开发环境 JetBrains PyCharm C ...
- C# TypeDescriptor获取类型转换器,实现泛型转换
需求背景 平时的coding过程中,经常性遇到string类型转换成其他的基本类型,如 int double bool等,那我们正常的方式就是下面的方式进行类型转换 int.Parse("1 ...
- 九度oj 题目1411:转圈
题目描述: 在一个有向图有n个顶点(编号从1到n),给一个起点s,问从起点出发,至少经过一条边,回到起点的最短距离. 输入: 输入包括多组,每组输入第一行包括三个整数n,m,s(1<=n< ...
- 防止csrf
//防csrf攻击 $csrf_hash = md5(uniqid(rand(), TRUE)); set_cookie("my_csrf_name", $csrf_hash, 0 ...
- hihoCoder #1117 战争年代
题目大意 对一棵树的节点染色.初始时每个点都染成颜色 $0$,然后进行 $m$ 轮操作.第 $i$ 轮操作:从 $[0,d_i]$ 中随机选出一个整数 $d$,将距离点 $x_i$ 不超过 $d$ 的 ...
- 刷题总结——Middle number(ssoj 优先队列)
题目: 给定一个整数序列··有两个操作: add x,表示序列中加入x mid 表示询问这个序列的中位数 原始序列数量n<=100000,操作数m<=10000 题解: 这道题可以直接用权 ...
- [POI2007]MEG-Megalopolis (树状数组,Dfs序)
题目描述 Solution 这道题考试的时候竟然没有仔细想,结果只拿了暴力分... 其实就是一个 DFS序+树状数组. 我们先把用 DFS 把它变成一个序列,同时记录它们的 \(siz\). 那么我们 ...
- windows8.1如何分盘
磁盘分区首先要弄明白磁盘物理顺序与逻辑顺序的区别,在[磁盘管理]界面,所显示的前后顺序为物理顺序,这是磁盘上实实在在的物理位置,如下图2的电脑磁盘物理顺序为CFDE.在[资源管理器]界面,所显示的顺序 ...