ftp服务的简介:
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。
在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上传或下载文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。
@下面开始我们的实验吧: 真机(172.25.254.148作为客户端) 虚拟机(ASUKA:172.25.254.48)作为服务端:
1.首先对于服务端(ASUKA):进行相关操作:
查看虚拟机IP:172.25.254.48
查看yum源是否配置成功:(进入yum源的目录)
查看yum源文件内容:
可以发现为网络yum源:
安装 vsftpd服务:
开启vsftpd服务并使vsftpd服务开机自启:
查看防火墙状态:
可以看到是开启状态(active)
fireware-cmd --list-all 查看防火墙支持服务项:可以看到没有vsftpd服务;需要我们添加它。
添加vsftpd服务:
永久加入ftp服务给防火墙服务支持项:
添加成功:
重新加载:
再次查看可以发现ftp服务添加成功:
注:直接关闭防火墙也是可以的。
#然后查看selinux的状态(getenforce)
可以看到是Enforcing,这样我们的ftp是没能正常启动的:
需要修改配置文件:
改为disabled:
重启系统才能生效:reboot:
可以看到生效了:
2.对客户端:(真机)进行操作:
只需要安装:lftp服务即可:(我们真机已经安装过lftp服务了)
#开始使用ftp服务做实验:
一些基本知识:
默认发布的目录: /var/ftp
协议接口: FTP标准命令TCP端口号为21,Port方式数据端口为20
服务配置文件: /etc/vsftpd/vsftpd.conf
报错id的解析: 500 @文件系统权限过大
530 @用户认证失败
550 @服务本身功能未开放
553 @本地文件系统权限过小
开始实验:
从客户端访问ftp服务器(ASUKA):
@(匿名用户访问ftp服务器)
当我们看到 pub文件时表示访问成功了!:
退出访问输入 quit:
@客户端利用『服务器本地用户』访问ftp服务器:
在服务端新建一个本地用户kexin :
并给kexin设置一个密码:
客户端利用kexin访问ftp服务器:(可以看到以kexin登陆成功):
对服务器kexin用户进行操作:(进入用户家目录,编写一个文件)
再次利用kexin进行访问:(可以看到我们刚才编写的hahaha文件了):(相当于我们访问了用户的家目录)
#对匿名用户的管理:
编写/etc/vsftpd/vsftpd.conf文件:
内容为:
如果将第12行的anonymouss_enable=YES 改为=NO的话 匿名用户就不可以访问服务器了:
ps:设置行号方便查看: 用输入:set nu即可
改为=NO
注:每次编写完文件需重启vsftpd服务才能生效:
可以看到从客户端我们已经无法用匿名用户访问服务器了:
当然做完实验 还原默认设定是一个很好的习惯!
@匿名用户的上传:(注:都得cd 进入pub 里才进行上传操作)
上传我们的/etc/passwd文件到pub目录 发现错误为550 服务未开启。
编写vsftpd文件:
加入anon_upload_enable=YES:
重启服务后,再次上传可以发现:
报错变为了553说明本地文件系统权限过小(需要我们给 /var/ftp/pub加权限和更改组)
给服务端的/var/ftp/pub目录加权限,更改组:
现在再次上传:(上传成功了)
@对本地用户:
编写vsftpd文件使本地用户不能访问:
改为NO
可以发现无法登录了:
@对匿名用户:
家目录的更改:
首先在服务端新建一个递归的根目录 下的/jack/wu目录
编写vsftpd文件进行家目录的修改:
找一个空白的地方进行添加:
可以看到匿名用户访问后的家目录变了:(变为我们设定的/jack了)
匿名用户上传文件默认权限修改:
编写vsftpd服务文件:
将022改称011
匿名用户可以下载服务端家目录里的文件:
在服务端家目录里新建一个文件:
用匿名用户访问下载这个文件:加入第21行
在/jack/wu下 get wudipipiguo:
匿名用户删除文件:
编写vsftpd文件:
以当时未修改的/var//ftp/pub 家目录为例:我们删除不掉文件:
更改之后可以删除:
匿名用户设置最大上传速率:
没设置之前:
修改文件后:
设定速率不超过102400k
可以看到速率明显变慢了(迅雷下载软件下载资源也是同理!)
匿名用户最大链接数(最大可访问人数):
max_clients=2 #设定最多两个人可访问那么最后访问的第三个人是访问不上服务端的
想要访问得等已经访问的两人中有人下线才可登陆!
匿名用户使用的用户身份修改:
编写下面内容:
匿名用户建立目录:
更改之前无法建立目录:
更改文件:
再次建立目录:(建立wudi目录成功了)
@本地用户 家目录的修改:
local_root=/指定的目录 #目录底下需要有一个目录!
新建一个/haha/nimei目录
找一个空白行编写:
可以看到效果:(家目录变成了/haha,
本地用户限制登陆:
vim /etc/vsftpd/ftpusers #编译这个文件
ftpusers是永久黑名单(限制性高)
加入kexin用户:
可以发现kexin无法访问了:
第二种方法:(临时黑明但『限制性比永久黑名单低一些』)
vim /etc/vsftpd/user_list #临时黑名单
当然作之前需要把永久黑名单里的kexin释放出去:
在临时黑名单里加入kexin用户:
@本地用户白名单的设定:
userlist_deny=NO #在配置文件里面修改填写:
vim /etc/vssftpd/user_list #加入你想要的用户进入白名单 比如:本服务端的kexin用户
#临时黑名单就变为了白名单,
而且不在白名单里的用户无法访问服务器了!
白名单里没有asuka用户,有kexin用户:
kexin可以访问
asuka不可以访问
但是,如果本地用户同时出现在白名单和永久黑名单里那用户还是不能登陆的,因为永久黑名单优先级高于》白名单(临时黑名单)
当kexin出现在黑名单时:
可以看到kexin也无法访问了:
##########虚拟用户的管理##########
(1)创建虚拟用户认证:
创建虚拟用户的原因:系统用户登陆ftp服务的同时也可以登录系统,这是不安全的,所以我们需要建立ftp的虚拟用户,使这些用户只能登陆访问ftp服务;
虚拟用户的创建方式:(在服务端ASUKA进行操作!)
在/etc/下编写一个名为:/etc//vsftpd/loginusers的文件:(当然名字是可以任意起的)
vim /etc/vsftpd/loginusers
1.编写新用户名称及密码(eg:cool1 用户, 密码为123,编写过程注不要用空格!)
编写完毕:
2.对编写的文件进行哈希(hash)加密以保障安全性:
并且可以看到loginusers.db的文件类型:
3.编辑策略文件(验证密码与用户是否一致的文件):
在 /etc/pam.d 目录下进行文件编辑
内容如下:
其中required表示 account用户名认证必须正确,否则登陆不了;
db=/etc/vsftpd/loginusers 后面默认会带.db 不需要我们手动编译!
4.编辑配置文件:
vim /etc/vsftpd/vsftpd.conf
可以看到原来的配置文件:(pam_service_name=vsftpd)
同时也可以看看vsftpd里如何编写的认证信息:(vim vsftpd)
现在将它更改为(pam........=ftpauth)
并且加入guest_enable=YES
更改完毕退出保存,并且重启服务:
看看效果如何:
可以看到我们新建的虚拟用户可以登陆ftp了
而且我们也可以发现更改完毕之后:除了虚拟用户之外,匿名用户还可以登陆,但是其他本地用户不可以登陆了:
(但还是可以指定虚拟用户登陆身份的)
(2)虚拟用户登陆身份的指定:
在此我们新建一个用户westos,并且在它的家目录底下新建一个名为kobe的目录:作为实验背景!
1.将虚拟用户指定身份设置为westos:(vim /etc/vsftpd/vsftpd.conf)
加入guest_username=westos
重启服务:
再次用cool1,2,3虚拟用户登陆ftp服务查看效果:(如果可以看到westos家目录底下的kobe目录信息说明试验成功了)
初次登陆可以发现报错500:(权限过大)
2.修改权限:
查看家目录权限:(755)
更改权限为 555
chmod 555 /home/westos
更改完毕:
再次登陆发现问题解决了:(可以看到westos家目录底下的kobe目录)
(3)虚拟用户家目录的设置:
@新建一系列新目录用来当作虚拟用户家目录:
@给目录加上满权限(777)方便后续实验操作:
@编辑配置文件:
添加下面两行:
注: $USER为C语言中的一个变量,输入不同的值,输出不同的结果
129行表示:将shell中$USER的用法带给ftp服务使用!
实验:
可以看到试验成功:
最后一项:
(4)虚拟帐号的独立设定:
一般情况下我们建立的虚拟帐号拥有一样的功能与权力(实际上虚拟用户使用的就算匿名用户的参数设定),当我们想让不同的虚拟帐号之间权力不同时:
可以通过设置虚拟用户的次配置文件来实现:
@新建虚拟用户的次配置目录及次配置文件:
@编辑配置文件:
首先注释掉匿名用户上传功能:(虚拟用户可以用此参数):(注释后虚拟用户,匿名用户都不可以上传了)
其次:
新增131行给配置文件:
@再编辑次配置文件:
vim /etc/vsftpd/user_conf/cool1
注:(所有编写文件里的数字仅代表行号,用set nu 来设置!从而方便我们查看)
让cool1虚拟用户可以上传其他cool2 cool3用户不可以:
cool1可以上传/etc/group文件!
cool2, cool3用户不可以上传:(报错550 服务未开启!)
ftp服务的介绍到此结束!