对于FTP,相信大家都不会陌生,小编个人认为,比起以前搭建的服务器,ftp的搭建算是简单的啦!
你看。。。。。。。。
首先,我们还是需要先看一下ftp是否安装(ftp的服务名是vsftp)
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的用户列表文件
我们打开ftp的主配置文件,小编来逐个解释一下(只讲重要的)
在配置文件中,前面有#符号的就是注释,那一行都不起作用,如果我们想要它生效,我们直接去掉那个注释就可以啦
annoyous_enable=yes(默认),小编改成了No,其实No的作用和注释掉这一行起的作用是一样的,默认都是No。
这句话的意思就是是否允许匿名登录ftp,yes就是同意,no就是拒绝,下面小编就不啰嗦解释了。
local_enable=YES,是否允许本地用户登录
local_root=...设置本地用户的根目录
write_enable=YES,是否允许本地用户有写入权限
local_umask=022默认的文件或目录掩码为22
anon_upload_enable=YES,匿名用户是否允许上传
anon_mkdir_write_enable=YES,是否允许匿名用户建立目录(写入)
dirmessage_enable=YES,是否开启目录提示功能
xferlog_enable=YES,是否开启日志功能
connect_from_port_20=YES,连接端口(20)是否开启
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
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地址列表
chroot_list_enable=YES,设置为no的时候,用户可以切换目录,设置为yes的时候,用户只能在自己的home目录中,需要和chroot_list_file配合使用,下面一行固定,在右方写的文件目录下,加入用户,文件内的用户就无法切换目录。
ls_recurse_enable=YES,是否允许递归查询,大型站点的ftp服务器启用此项方便远程用户查询
listen=YES,是否处于监听状态
listen_ipv6=YES,是否支持ipv6
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”错误,我们就这样做
我们会发现,有的是/bin/bash,有的是/sbin/nologin
这里小编解释一下,因为很多时候我们在创建新用户的时候,用户的shell目录都是没有设置的,就按照默认的shell目录,然而默认的shell目录不允许切换用户,所以我们把shell目录该一下能切换用户的就可以啦,也就是说,我们把/sbin/nologin换成/bin/bash就可以啦。
这里小编只允许本地账户登录,而本地用户不能切换目录,就拿test1,test2做下测试
这里小编的chroot_list_enable=YES已经激活,与chroot_list_file=/etc/vsftpd/chroot_list配合使用,在该文件中加入本地用户。
然后我们连接ftp服务器,这里就是本机的ip地址
这里输入用户名和密码,这里小编用的是test1用户
这里我们查看一下目录
我们看到,用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相对于其他服务器简单的多,所以就多说一些,祝各位成功!!!