LINUX下ftp服务器的搭建和配置

对于FTP,相信大家都不会陌生,小编个人认为,比起以前搭建的服务器,ftp的搭建算是简单的啦!

你看。。。。。。。。

首先,我们还是需要先看一下ftp是否安装(ftp的服务名是vsftp)

LINUX下ftp服务器的搭建和配置

ftp是所有服务中不用任何配置就可以直接启动的(小编一开始做的时候激动了半天)

在这里小编多说一点,就是服务的启动方式。(启动方式有两种)(这里小编拿ftp来举例)

1.service vsftp restart(重启)|start(启动)|stop(停止){这也是小编最喜欢用的命令}

2.、/etc/rc.d/init.d/vsftp restart(重启)|start(启动)|stop(停止){了解就好,知道这种启动方式就行了,根据自己喜好决定}

开机自启动

chkconfig vsftpd on | of 开机的时候是否自动开启服务

小编解析一下vsftp的目录结构

/usr/sbin/vsftpd                               vsftpd的主程序

/etc/rc.d/init.d/vsftpd                      启动vsftpd的脚本

/etc/vsftpd/vsftpd.conf                   主配置文件

/etc/pam.d/vsftpd                           PAM认证文件

/var/ftp                                            匿名用户主目录

/var/ftp/pub                                    匿名用户的下载目录

/etc/vsftpd/ftpusers                       禁止使用vsftpd的用户列表文件

/etc/vsftpd/user_list                       禁止或允许使用vsftpd的用户列表文件

LINUX下ftp服务器的搭建和配置我们打开ftp的主配置文件,小编来逐个解释一下(只讲重要的)

LINUX下ftp服务器的搭建和配置

在配置文件中,前面有#符号的就是注释,那一行都不起作用,如果我们想要它生效,我们直接去掉那个注释就可以啦

annoyous_enable=yes(默认),小编改成了No,其实No的作用和注释掉这一行起的作用是一样的,默认都是No。

这句话的意思就是是否允许匿名登录ftp,yes就是同意,no就是拒绝,下面小编就不啰嗦解释了。

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

local_root=...设置本地用户的根目录

write_enable=YES,是否允许本地用户有写入权限

local_umask=022默认的文件或目录掩码为22

LINUX下ftp服务器的搭建和配置

anon_upload_enable=YES,匿名用户是否允许上传

anon_mkdir_write_enable=YES,是否允许匿名用户建立目录(写入)

dirmessage_enable=YES,是否开启目录提示功能

xferlog_enable=YES,是否开启日志功能

connect_from_port_20=YES,连接端口(20)是否开启

LINUX下ftp服务器的搭建和配置

chown_uploads=YES ,设定是否允许 改变 上传文件的属主 

chown_username=whoever,设置想要改变的上传目录的属主,如果需要则输入一个系统用户名,例如可以把上传的文件都改成root属主。这这里whoever代表任何人。

xferlog_file=/var/log/vsftpd.log,设置系统维护记录ftp服务器上传和下载情况的日志文件

xferlog_std_format=YES,如果启用此选项,传输日志文件将以标准xferlog的格式书写,该格式的日志文件默认为/var/log/xferlog,也可以通过xferlog file选项对其进行设定,默认值为NO

idle_session_timeout=600,设置数据传输中断间隔时间,此语句表示空闲的用户中断时间为600秒,既当数据传输结束后,用户连接ftp服务器时间不应超过600秒,可以根据实际情况进行修改

date_connection_timeout=120,设置数据连接超时时间,该语句表示数据连接超时时间为120秒,可根据实际情况对其修改

nopriv_user=ftpsecure,运行vsftpd需要的非特权系统用户,缺省是nobody

LINUX下ftp服务器的搭建和配置

async_abor_enable=YES,如果ftp客户端下达async ABOR这个指令时,这个设定才需要启用

ascii_upload_enable=YES,大多数ftp服务器都选择用ASCII方式上传数据

ascii_download_enable=YES,以ASCII方式下载数据

ftpd_banner=Welcome to blah FTP service,登录ftp显示的欢迎信息,可以修改欢迎内容,这一点和目录提示差不多,同样需要在目录下创建.message文件,文件内容为欢迎信息

deny_email_enable=YES,可以拒绝某些email地址来控制登录权限

banner_email_file=/etc/vsftpd/banned_emails,与上面一项配合使用,这里就是拒绝的email地址列表

LINUX下ftp服务器的搭建和配置

chroot_list_enable=YES,设置为no的时候,用户可以切换目录,设置为yes的时候,用户只能在自己的home目录中,需要和chroot_list_file配合使用,下面一行固定,在右方写的文件目录下,加入用户,文件内的用户就无法切换目录。

ls_recurse_enable=YES,是否允许递归查询,大型站点的ftp服务器启用此项方便远程用户查询

listen=YES,是否处于监听状态

listen_ipv6=YES,是否支持ipv6

LINUX下ftp服务器的搭建和配置

pam_service_name=vsftpd,设置pam外挂模块提供的认证服务所使用的配置文件名,既/etc/pam.d/vsftpd文件,此文件中file=/etc/vsftpd/ftpusers字段,说明了pam模块能抵挡的账号内容来自文件/etc/vsftpd/ftpusers中

userlist_enable=YES,是否允许user list文件中的用户登录ftp服务器

tcp_wrappers=YES,表明服务器在使用tcp wrappers作为主机访问控制方式,tcp wrappers可以实现linux系统中网络服务的基于主机地址的访问控制,在/etc目录中的hosts.allow和hosts.deny两个文件用于设置tcp wrappers的访问控制,前者是指允许访问记录,后者设置拒绝访问记录。

当然,这只是一个模板,并不包括所有的权限控制,如限制服务器的连接数目这里模板中就没有写出,这里需要我们直接在配置文件中输入,感兴趣的同学也可以搜一下其他的权限控制,一般来说,模板给的这些一般就够用啦。

在使用的时候,根据需求,设置相应的权限,只要理解了每一行命令是做什么的,配置ftp服务器就信手拈来啦!

这里小编说一下一开始做的时候遇到的问题,就是用su无法切换用户,后来小编从网上找到了答案。

出现“This account is currently not available”错误,我们就这样做

LINUX下ftp服务器的搭建和配置

LINUX下ftp服务器的搭建和配置

我们会发现,有的是/bin/bash,有的是/sbin/nologin

这里小编解释一下,因为很多时候我们在创建新用户的时候,用户的shell目录都是没有设置的,就按照默认的shell目录,然而默认的shell目录不允许切换用户,所以我们把shell目录该一下能切换用户的就可以啦,也就是说,我们把/sbin/nologin换成/bin/bash就可以啦。

这里小编只允许本地账户登录,而本地用户不能切换目录,就拿test1,test2做下测试

LINUX下ftp服务器的搭建和配置

LINUX下ftp服务器的搭建和配置

这里小编的chroot_list_enable=YES已经**,与chroot_list_file=/etc/vsftpd/chroot_list配合使用,在该文件中加入本地用户。

然后我们连接ftp服务器,这里就是本机的ip地址

LINUX下ftp服务器的搭建和配置

这里输入用户名和密码,这里小编用的是test1用户

这里我们查看一下目录

LINUX下ftp服务器的搭建和配置

我们看到,用pwd输出的是/目录,但是用ls发现它是home目录,我们切换一下目录,发现无法切换目录,这里就说明我的一开始配置的vsftp.conf中做的限制已经生效。

在ftp下的命令和linux的shell命令一样,只不过有一些略有差别,下面小编就介绍一下常用的命令。

ls(是LS必须小写):列出当前目录

cd:切换目录

ascii:设置传输模式为ASCII

binary:设置文件传输为二进制

close:结束当前的ftp会话

hash:当数据缓冲区的数据传送完成后显示一个#

get(mget):从远程主机下载文件到远程主机

put(mput):从远程主机传送文件到远程主机

open:连接到远程主机的ftp站点

quit:断开ftp连接并退出ftp

?:显示本地帮助信息

!:切换到shell中

小提示:在dos和shell界面中,ftp直接跟ftp服务器的ip就好,但在浏览器或者Windows下的资源管理器中,需要的格式是ftp://0.0.0.0(ftp服务器的IP地址)

最后小编再说一些常见错误:

账户登录失败

1.密码错误

2.如果密码无误,可能pam模块中vsftpd的配置文件错误。pam的配置比较复杂,其中auth字段主要是接受用户名和密码,从而进行对用户密码的认证。account字段主要检查账户是否被允许登录系统,账号是否已过期,账号的登录是否有时间段限制等。要保证这两个字段配置的正确性,否则造成ftp账号无法登录服务器。就实际情况而言,大部分账号登录失败都是由这个错误造成的。

3.用户目录权限,ftp账号对于主目录没有任何权限时,也会收到“登录失败”的错误提示。此时可根据账号的用户身份,重新设置其主目录权限,重启vsftpd服务,使配置生效。

防火墙设置

看服务器的防火墙是否开启,或者是否允许21端口的访问和开启主动模式的20端口。

连接超时

我们可以ping一下ftp的ip地址,如果ping都ping不通,ftp怎么可能连接的上,我们可以检查一下线路。再进行排查。

OK,这次概念性的东西说的有点多,因为ftp相对于其他服务器简单的多,所以就多说一些,祝各位成功!!!