大家好,如果您还对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
#用户不能删除和写点文件(文件名以'.'开头的文件),即使用户是文件的所有者也不行。
#如果 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使用者