大家好,如果您还对ubuntu配置ftp服务器不太了解,没有关系,今天就由本站为大家分享ubuntu配置ftp服务器的知识,包括如何在ubuntu中安装设置ftp服务器的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

一、如何在ubuntu中安装设置ftp服务器

1、更新软件源,保证源是最新的,这样有利于下面在线通过apt-get install命令安装ftp。

2、使用sudo apt-get install vsftp命令安装vsftp,安装软件需要root权限,我们使用sudo来暂时获取。

3、安装好ftp后默认是会自动创建ftp用户的,然后设置ftp用户的密码,输入sudo passwd ftp,然后输入密码,再确认密码。

4、创建ftp用户的家目录,使用sudo mkdir/home/ftp命令

5、设置ftp家目录的权限,我这里为方便使用sudo chmod 777/home/ftp命令将权限设置为777,当然你可以根据自己需求进行设置。

6、对/etc/vsftpd.conf配置文件进行一定的修改。使用 sudo gedit/etc/vsftpd.conf打开配置文件,如果你喜欢vi或vim编辑器也可以使用它们打开。

7、将配置文件中”anonymous_enable=YES“改为“anonymous_enable=NO”(是否允许匿名ftp,若不允许选NO)

取消如下配置前的注释符号:

local_enable=YES(是否允许本地用户登录)

write_enable=YES(是否允许本地用户写的权限)

chroot_local_user=YES(是否将所有用户限制在主目录)

chroot_list_enable=YES(是否启动限制用户的名单)

chroot_list_file=/etc/vsftpd.chroot_list(可在文件中设置多个账号)

8、然后重启ftp服务,使用命令sudo service vsftpd restart重启ftp服务。

9、测试ftp,复制一些文件到/home/ftp目录下

方法一:在浏览器中输入,网页登录。

方法二:在终端中输入ftp localhost,然后输入用户名与密码实现登录。

另外:如果登录ftp总是出现密码错误,可以将/etc/vsftpd.conf配置文件的pam_service_name=vsftpd改为pam_service_name=ftp,即可解决。

二、Ubuntu系统下Pure-ftpd的安装及配置教程

安装

Ubuntu/Debian提供了三个不同的 Pure-FTPd的 deb安装包,分别是 pure-ftpd、pure-ftpd-ldap和 pure- ftpd-mysql,其中 ldap和 mysql分别表示 Pure-FTPd跟 ldap和 mysql集成,另外这三个包都依赖于 pure-ftpd-mon。如果我们不需要 ldap和 mysql的话,选择 pure-ftpd就可以了。

代码如下:

apt-get install pure-ftp-mon pure-ftpd

配置方式

不同于其他的多数守护进程(daemon),Pure-FTPd的配置比较特别:它不读取任何的配置文件,配置选项都是通过命令行参数来实现的。例如:参数'-H'被设计为通过避免 DNS查询来加快服务器的速度。要启用该特*,我们只需要将其加到命令行中: pure-ftpd-H。备选的长参数也被支持的,下面是一个等价的命令 pure-ftpd--dontresolve

针对喜欢配置文件的用户,Pure-FTPd官方给出了一种方案:通过一个封装(wrer)工具,将配置文件解析并将其转换成命令行参数。首先根据自己的需要编辑配置文件 pure-ftpd.conf,而后通过下面的命令启动 pure-config.pl/etc/pure-ftpd.conf。pure-config.pl是一个 perl脚本,它根据配置文件采用合适的命令行选项来调用 pure-ftpd。

在 Ubuntu/Debian中,开发人员采用了另外的一种 wrer方式:它没有采用单一的配置文件,而是在/etc下建立一个pure-ftpd的目录,其下又有 conf、auth、db这三个目录和一个名为 pureftpd-alias-dir的文件。每一个配置选项都以一个文件的形式存在于/etc/pure-ftpd/conf目录中,而且是以选项为文件名,选项值为文件内容。例如如果想配置AnonymousOnly=yes(只允许匿名用户),则在/etc/pure-ftpd/conf中创建一个名为 AnonymousOnly的文件,里面只有一行内容:yes。

在 Ubuntu中,我们只关注最后一种配置方式。

配置选项

通过 pure-ftpd的手册页我们可以得到详细的命令行参数列表及其解释:

复制代码

代码如下:

man pure-ftpd

通过 pure-ftpd-wrer的手册页我们可以得到可用的配置文件选项列表:

代码如下:

man pure-ftpd-wrer

下面是前面我们介绍的第二种方式的配置文件,我们这儿可以将其作为第三种方式来理解。比如要限制所有用户在其主目录中,在/etc/pure-ftpd/conf中创建一个名为 ChrootEveryone的文件,里面加入一行内容:yes即可。

#限制所有用户在其主目录中

ChrootEveryone yes

#如果前一个指令被设置为了"no",下面组的成员(GID)就不受主目录的限制了。而其他的用户还是

#会被限制在自己的主目录里。如果你不想把任何用户限制在自己的主目录里,只要注释掉 ChrootEveryone

#和 TrustedGID就可以了。

# TrustedGID 100

#兼容ie等比较非正规化的ftp客户端

BrokenClientsCompatibility no

#服务器总共允许同时连接的最大用户数

MaxClientsNumber 50

#做为守护(doemon)进程运行(Fork in background)

Daemonize yes

#同一IP允许同时连接的用户数(Maximum number of sim clients with the same IP address)

MaxClientsPerIP 8

#如果你要记录所有的客户命令,设置这个指令为"yes"。

# This directive can be duplicated to also log server responses.

VerboseLog no

#即使客户端没有发送'-a'选项也列出隐藏文件( dot-files)。

DisplayDotFiles yes

#不允许认证用户-仅作为一个公共的匿名FTP。

AnonymousOnly no

#不允许匿名连接,仅允许认证用户使用。

NoAnonymous no

# Syslog facility(auth, authpriv, daemon, ftp, security, user, local*)

#缺省的功能( facility)是"ftp"。"none"将禁止日志。

SyslogFacility ftp

#定制用户登陆后的显示信息(Display fortune cookies)

# FortunesFile/usr/share/fortune/zippy

#在日志文件中不解析主机名。日志没那么详细的话,就使用更少的带宽。在一个访问量很大

#的站点中,设置这个指令为"yes",如果你没有一个能工作的DNS的话。

DontResolve yes

#客户端允许的最大的空闲时间(分钟,缺省15分钟)

MaxIdleTime 15

# LDAP配置文件(参考 README.LDAP)

# LDAPConfigFile/etc/pureftpd-ldap.conf

# MySQL配置文件(参考 README.MySQL)

# MySQLConfigFile/etc/pureftpd-mysql.conf

# Postgres配置文件(参考 README.PGSQL)

# PGSQLConfigFile/etc/pureftpd-pgsql.conf

# PureDB用户数据库(参考 README.Virtual-Users)

# PureDB/etc/pureftpd.pdb

# pure-authd的socket路径(参考 README.Authentication-Modules)

# ExtAuth/var/run/ftpd.sock

#如果你要启用 PAM认证方式,去掉下面行的注释。

# PAMAuthentication yes

#如果你要启用简单的 Unix系统认证方式(/etc/passwd),去掉下面行的注释。

# UnixAuthentication yes

#请注意,LDAPConfigFile, MySQLConfigFile, PAMAuthentication和

# UnixAuthentication这些指令只能被使用一次,不过,他们能被混合在一起用。例如:如果你使用了

# MySQLConfigFile和 UnixAuthentication,那么 SQL服务器将被访问。如果因为用户名未找

#到而使 SQL认证失败的话,就会在/etc/passwd和/etc/shadow中尝试另外一种认证,如果因

#为密码错误而使 SQL认证失败的话,认证就会在此结束了。认证方式由它们被给出来的顺序而被链

#接了起来。

#'ls'命令的递归限制。第一个参数给出文件显示的最大数目。第二个参数给出最大的子目录深度。

LimitRecursion 2000 8

#允许匿名用户创建新目录?

AnonymousCanCreateDirs no

#如果系统被 loaded超过下面的值,匿名用户会被禁止。

MaxLoad 4

#被动连接响应的端口范围。- for firewalling.

# PassivePortRange 30000 50000

#强制一个IP使用被动响应( PASV/EPSV/SPSV replies)。- for NAT.

# Symbolic host names are also aepted for gateways with dynamic IP

# addresses.

# ForcePassiveIP 192.168.0.1

#匿名用户的上传/的比率。

# AnonymousRatio 1 10

#所有用户的上传/的比率。

# This directive superscedes the previous one.

# UserRatio 1 10

#不接受所有者为"ftp"的文件的。例如:那些匿名用户上传后未被本地管理员验证的文件。

AntiWarez yes

第二个文件

#客户端登录的时候的默认编码,开启这个选项的话,windows登录时就不会显示不了中文的了

ClientCharset gbk

#服务监听的IP和端口。(缺省是所有IP和21端口)

# Bind 127.0.0.1,21

#匿名用户的最大带宽(KB/s)。

# AnonymousBandwidth 8

#所有用户的最大带宽(KB/s),包括匿名用户。

# Use AnonymousBandwidth*or* UserBandwidth, both makes no sense.

# UserBandwidth 8

#新建目录及文件的属*掩码值。文件掩码;:目录掩码;.

# 177:077 if you feel paranoid.

Umask 133:022

#认证用户允许登陆的最小组ID(UID)。

MinUID 100

#仅允许认证用户进行 FXP传输。

AllowUserFXP yes

#对匿名用户和非匿名用户允许进行匿名 FXP传输。

AllowAnonymousFXP no

#用户不能删除和写点文件(文件名以'.'开头的文件),即使用户是文件的所有者也不行。

ubuntu配置ftp服务器 如何在ubuntu中安装设置ftp服务器

#如果 TrustedGID指令是 enabled,文件所属组用户能够访问点文件(dot-files)。

ProhibitDotFilesWrite no

#禁止读点文件(文件名以'.'开头的文件)(.history,.ssh...)

ProhibitDotFilesRead no

#永不覆盖文件。当上传的文件,其文件名已经存在时,自动重命名,如: file.1, file.2, file.3,...

AutoRename no

#不接受匿名用户上传新文件( no=允许上传)

AnonymousCantUpload no

#仅允许来自以下IP的非匿名用户连接。你可以使用这个指令来打开几个公网IP来提供匿名FTP,

#而保留一个私有的防火墙保护的IP来进行远程管理。你还可以只允许一内网进行认证,而在另外

#一个IP上提供纯匿名的FTP服务。

#TrustedIP 10.1.1.1

#如果你要为日志每一行添加 PID去掉下面行的注释。

# LogPID yes

#使用类似于Apache的格式创建一个额外的日志文件,如:

# fw.c9x.- jedi [13/Dec/1975]"GET/ftp/linux.tar.bz2" 200 21809338

#这个日志文件能被 流量分析器处理。

# AltLog clf:/var/log/pureftpd.log

#使用优化过的格式为统计报告创建一个额外的日志文件。

# AltLog stats:/var/log/pureftpd.log

#使用标准的W3C格式创建一个额外的日志文件。(与大部分的商业日志分析器兼容)

# AltLog w3c:/var/log/pureftpd.log

#不接受 CHMOD命令。用户不能更改他们文件的属*。

# NoChmod yes

#允许用户恢复和上传文件,却不允许删除他们。

# KeepAllFiles yes

#用户主目录不存在的话,自动创建。

# CreateHomeDir yes

#启用虚拟的磁盘限额。第一个数字是最大的文件数。

#第二个数字是最大的总的文件大小(单位:Mb)。

#所以,1000:10就限制每一个用户只能使用 1000个文件,共10Mb。

# Quota 1000:10

#如果你的 pure-ftpd编译时加入了独立服务器( standalone)支持,你能够改变 pid文件

#的位置。缺省位置是/var/run/pure-ftpd.pid。

# PIDFile/var/run/pure-ftpd.pid

#如果你的 pure-ftpd编译时加入了 pure-uploadscript支持,这个指令将会使 pure-ftpd

#发送关于新上传的情况信息到/var/run/pure-ftpd.upload.pipe,这样 pure-uploadscript

#就能读然后调用一个脚本去处理新的上传。

# CallUploadScript yes

#这个选项对允许匿名上传的服务器是有用的。当/var/ftp在/var里时,需要保留一定磁盘空间

#来保护日志文件。当所在磁盘分区使用超过百分之 X时,将不在接受新的上传。

MaxDiskUsage 99

#如果你不想要你的用户重命名文件的话,就设置为'yes'。

# NoRename yes

#是'customer proof':工作区(workaround)反对普通的客户错误,类似于:'chmod 0 public_html'的错误。

#那是一个有效的命令,不过,将导致无知的客户所定他们自己的文件,将使你的技术支持忙于愚蠢的的问题中。

#如果你确信你所有的用户都有基本的Unix知识的话,这个特*将没什么用了。不过,如果你是一个主机提供商

#的话,启用它。

CustomerProof yes

#每一个用户的并发限制。只有在添加了--with-peruserlimits编译选项进行编译后,这个指令才起

#作用。(大部分的二进制的发布版本就是例子)

#格式是:每一个用户最大允许的进程;:最大的匿名用户进程;

#例如: 3:20意思是同一个认证用户最大可以有3个同时活动的进程。而且同时最多只能有20个匿名用户进程。

# PerUserLimits 3:20

三、ubuntu服务器安装proftpd ftp服务器步骤

一、安装

复制代码

  

代码如下:

sudo apt-get install proftpd

安装过程中会让选择运行模式:Standalone和Id,前者是单一服务器模式,后者是超级服务器模式,

  我选的Standalone。

二、配置

复制代码

  

代码如下:

sudo vim/etc/shells

加入如下代码

复制代码

  

代码如下:

/bin/false

新建用户ftpuser1和用户组ftp并设置密码,此用户不需要有效的shell(更安全),所以选择/bin/false

  给fptuser1

复制代码

  

代码如下:

sudo groupadd ftp

  sudo useradd ftpuser1-p pass-g ftp-d/home/ftp-s/bin/false

在/home/ftp目录下新建upload和download目录并修改权限

复制代码

  

代码如下:

cd/home/ftp

  sudo mkdir download

  sudo mkdir upload

  cd/home

  sudo chmod 755 ftp

  cd/home/ftp

  sudo chmod 755 download

  sudo chmod 777 upload

三、修改proftpd核心配置文件proftpd.conf

复制代码

  

代码如下:

sudo vim/etc/proftpd/proftpd.conf

  #

  #/etc/proftpd/proftpd.conf-- This is a basic ProFTPD configuration file.

  # To really ly changes reload proftpd after modifications.

  #

  # Includes DSO modules

  Include/etc/proftpd/modules.conf

  # Set off to disable IPv6 support which is annoying on IPv4 only boxes.

  UseIPv6 off#我们不需要IPv6,所以off

  ServerName"xiaoyigeng's FTP Server"#修改服务器名

  ServerType standalone#服务器运行模式,这里填standalone,也可以选

  id

  DeferWele on#用户登陆时是否显示欢迎信息

  MultilineRFC2228 on

  DefaultServer on

  ShowSymlinks on

  TimeoutNoTransfer 600

  TimeoutStalled 600#可以降到100

  TimeoutIdle 1200#发呆超时

  DisplayLogin wele.msg#如果上边DeferWel设置成on,则显示

  wele.msg中的内容

  DisplayFirstChdir.message#更改目录时显示的内容

  ListOptions"-l"

  DenyFilter/*.*/

  # Use this to jail all users in their homes

  DefaultRoot/home/ftp# ftp用户被限制在这个目录中

  # Users require a valid shell listed in/etc/shells to login.

  # Use this directive to release that constrain.

  # RequireValidShell off#匿名用户要选on

  # Port 21 is the standard FTP port.

  Port 21#服务运行的端口

  # In some cases you h*e to specify passive ports range to by-pass

  # firewall limitations. Ephemeral ports can be used for that, but

  # feel free to use a more narrow range.

  # PassivePorts 49152 65534# PASV模式下用到的端口

  # If your host was NATted, this option is useful in order to

  # allow passive tranfers to work. You h*e to use your public

  # address and opening the passive ports used on your firewall as well.

  # MasqueradeAddress 1.2.3.4

  # To prevent DoS attacks, set the maximum number of child processes

  # to 30. If you need to allow more than 30 concurrent connections

  # at once, simply increase this value. Note that this ONLY works

  # in standalone mode, in id mode you should use an id server

  # that allows you to limit maximum number of processes per service

  #(such as xid)

  MaxInstances 30

  # Set the user and group that the server normally runs at.

  User nobody#服务器运行在nobody用户下

  Group nobody#服务器运行在nobody组下

  # Umask 022 is a good standard umask to prevent new files and dirs

  #(second parm) from being group and world writable.

  Umask 022 022#默认新建文件的权限

  # Normally, we want files to be overwriteable.

  AllowOverwrite on#文件可以被覆盖

  # Unment this if you are using NIS or LDAP to retrieve passwords:

  # PersistentPasswd off

  # Be warned: use of this directive impacts CPU *erage load!

  # Unment this if you like to see progress and transfer rate with ftpwho

  # in downloads. That is not needed for uploads rates.

  #

  # UseSendFile off

  # Choose a SQL backend among MySQL or PostgreSQL.

  # Both modules are loaded in default configuration, so you h*e to specify the backend

  # or ment out the unused module in/etc/proftpd/modules.conf.

  # Use'mysql' or'postgres' as possible values.

  #

  #IfModule mod_sql.c

  # SQLBackend mysql

  #/IfModule

  TransferLog/var/log/proftpd/xferlog#传送文件日志

  SystemLog/var/log/proftpd/proftpd.log#系统运行日志

  IfModule mod_tls.c

  TLSEngine off

  /IfModule

  IfModule mod_quota.c

  QuotaEngine on

  /IfModule

  IfModule mod_ratio.c

  Ratios on

  /IfModule/pp# Delay engine reduces impact of the so-called Timing Attack described in

  # a href="

  # It is on by default.

  IfModule mod_delay.c

  DelayEngine on

  /IfModule

  IfModule mod_ctrls.c

  ControlsEngine on

  ControlsMaxClients 2

  ControlsLog/var/log/proftpd/controls.log

  ControlsInterval 5

  ControlsSocket/var/run/proftpd/proftpd.sock

  /IfModule

  IfModule mod_ctrls_admin.c

  AdminControlsEngine on

  /IfModule

  # A basic anonymous configuration, no upload directories.

  # Anonymous~ftp

  # User ftp

  # Group nogroup

  ## We want clients to be able to login with"anonymous" as well as"ftp"

  # UserAlias anonymous ftp

  ## Cosmetic changes, all files belongs to ftp user

  # DirFakeUser on ftp

  # DirFakeGroup on ftp

  #

  # RequireValidShell off

  #

  ## Limit the maximum number of anonymous logins

  # MaxClients 10

  #

  ## We want'wele.msg' displayed at login, and'.message' displayed

  ## in each newly chdired directory.

  # DisplayLogin wele.msg

  # DisplayFirstChdir.message

  #

  ## Limit WRITE everywhere in the anonymous chroot

  # Directory*

  # Limit WRITE

  # DenyAll

  #/Limit

  #/Directory

  #

  ## Unment this if you're br*e.

  ## Directory ining

  ### Umask 022 is a good standard umask to prevent new files and dirs

  ###(second parm) from being group and world writable.

  ## Umask 022 022

  ## Limit READ WRITE

  ## DenyAll

  ##/Limit

  ## Limit STOR

  ## AllowAll

  ##/Limit

  ##/Directory

  #

  #/Anonymous

  # Valid Logins#以下部分为设置用户权限部分

  Limit LOGIN

  AllowUser ftpuser1

  DenyAll

  /Limit

  Directory/home/ftp

  Umask 022 022

  AllowOverwrite off

  Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD

  DenyAll

  /Limit

  /Directory

  Directory/home/ftp/download/

  Umask 022 022

  AllowOverwrite off

  Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD

  DenyAll

  /Limit

  /Directory

  Directory/home/ftp/upload/

  Umask 022 022

  AllowOverwrite on

  Limit READ RMD DELE

  DenyAll

  /Limit

  Limit STOR CWD MKD

  AllowAll

  /Limit

  /Directory

四、启动、停止、重启服务器

复制代码

  

代码如下:

sudo/etc/init.d/proftpd start

  sudo/etc/init.d/proftpd stop

  sudo/etc/init.d/proftpd restart

五、维护

可以到/var/log/proftpd目录查看日志

查看ftp服务器负载命令 ftptop

  查看什么认登陆服务器 ftpwho

PS:proftpd中Limit的使用介绍

我们用到的比较多的可能是Limit的使用,Limit大致有以下动作,基本能覆盖全部的权限了。

CMD:Change Working Directory改变目录

  MKD:MaKe Directory建立目录的权限

  RNFR: ReName FRom更改目录名的权限

  DELE:DELEte删除文件的权限

  RMD:ReMove Directory删除目录的权限

  RETR:RETRieve从服务端到客户端的权限

  STOR:STORe从客户端上传到服务端的权限

  READ:可读的权限,不包括列目录的权限,相当于RETR,STAT等

  WRITE:写文件或者目录的权限,包括MKD和RMD

  DIRS:是否允许列目录,相当于LIST,NLST等权限,还是比较实用的

  ALL:所有权限

  LOGIN:是否允许登陆的权限

  针对上面这个Limit所应用的对象,又包括以下范围

  AllowUser针对某个用户允许的Limit

  DenyUser针对某个用户禁止的Limit

  AllowGroup针对某个用户组允许的Limit

  DenyGroup针对某个用户组禁止的Limit

  AllowAll针对所有用户组允许的Limit

  DenyAll针对所有用户禁止的Limit

关于限制速率的参数为:

  TransferRate STOR|RETR速度(Kbytes/s) user使用者