linux之ftp服务

一、ftp服务

1、什么是ftp服务?

是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。

2、运行机制
1)、FTP服务器:

与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

2)、匿名FTP:

使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可下载或上传文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。

3、用户分类
1)、Real帐户

这类用户是指在FTP服务上拥有帐号。当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。

2)、Guest用户

在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类帐户,在Vsftpd软件中就叫做Guest用户。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。

3)、Anonymous(匿名)用户

这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。
在组建FTP服务器的时候,我们就需要根据用户的类型,对用户进行归类。默认情况下,Vsftpd服务器会把建立的所有帐户都归属为Real用户。但是,这往往不符合企业安全的需要。因为这类用户不仅可以访问自己的主目录,而且,还可以访问其他用户的目录。这就给其他用户所在的空间带来一定的安全隐患。所以,企业要根据实际情况,修改用户所在的类别。

二、ftp服务下载

yum install vsftp -y			下载服务器端软件 
yum install lftp -y				下载客户端软件
systemctl start vsftpd			启动ftp服务
systemctl enable vsftpd			开机自启动

linux之ftp服务_第1张图片
linux之ftp服务_第2张图片
linux之ftp服务_第3张图片

三、ftp服务配置(服务器端)

1、vdftp服务配置文件
rpm -qc vsftpd				查看服务相关配置文件
	/etc/vsftpd/
		ftpusers			永久黑名单
		vsftpd.conf			服务配置文件
		user_list			暂时黑名单

在这里插入图片描述

2、匿名用户相关配置

vim /etc/vsftpd/vsftpd.conf

匿名用户登录
	anonymous_enable=YES|NO	
匿名用户上传
	write_enable=YES
	anon_upload_enable=YES
	chgrp ftp /var/ftp/pub
	chmod 775 /var/ftp/pub
匿名用户修改家目录
	anon_root=/dir	
匿名用户上传文件权限修改
	anon_umask=xxx
匿名上传文件的拥有者
	chown_uploads=YES
	chown_username=student
匿名上传文件权限修改
	chown_upload_mode=xxxx
匿名上传速率限制
	anon_max_rate=?
最大连接数
	max_clients=3

匿名用户上传下载
linux之ftp服务_第4张图片
在这里插入图片描述
vim /etc/vsftpd/vsftpd.conf
在这里插入图片描述
匿名用户修改家目录
linux之ftp服务_第5张图片
vim /etc/vsftpd/vsftpd.conf

anon_root=/westos

在这里插入图片描述

3、本地用户相关配置
本地用户
	local_enable=YES|NO	本地用户是否可以登陆
	write_enable=YES|NO	ftp是否对登陆用户可写
本地用户上传保留权限
	local_umask=xxx
将用户锁定到自己家目录中
	chroot_local_user=YES
	chmod u-w /home/*

实验流程:
1、开启本地用户服务
在这里插入图片描述
2、编辑/etc/vsftpd/vsftpd.conf
在这里插入图片描述
3、客户端测试

4、白名单
法1、vim /etc/vsftpd/vsftpd.conf					插入以下内容
		chroot_local_user=YES		
		chroot_list_enable=YES
		chroot_list_file=/etc/vsftpd/chroot_list	
	vim /etc/vsftpd/chroot_list						添加被允许的用户

法2、vim /etc/vsftpd/vsftpd.conf					
		userlist_deny=NO
	vim /etc/vsftpd/user_list						插入被允许的用户

在这里插入图片描述

5、黑名单
法1、vim /etc/vsftpd/vsftpd.conf				 	插入内容
		chroot_local_user=NO		
		chroot_list_enable=YES
		chroot_list_file=/etc/vsftpd/chroot_list
	vim /etc/vsftpd/vsftpd.conf						插入被拒绝的名单
		
	法2、vim /etc/vsftpd/ftpusers					永久黑名单
		 vim /etc/vsftpd/user_list					暂时黑名单
四、虚拟用户设定

1、虚拟用户帐号创建

1、创建ftp虚拟用户文件	
	vim /etc/vsftpd/login_file				
		user1
		1234
		user2
		1234
		....
	注:每行都不能有空格
2、对用户文件加密
	db_load -T -t hash -f /etc/vsftpd/login_file /etc/sftpd/login_file.db
3、创建认证文件并指明认证方式
	vim /etc/pam.d/ftp_login_auth
		account		required	pam_userdb.so	/etc/vsftpd/login_file
		auth		required	pam_userdb.so	/etc/vsftpd/login_file
4、修改ftp配置文件
	vim /etc/vsftpd/vsftpd.conf
		pam_service_name=ftp_login_auth
		guest_enable=YES

例子:
linux之ftp服务_第6张图片在这里插入图片描述
在这里插入图片描述

2、虚拟用户身份指定

1、mkdir /var/ftp/user{1..3}			创建虚拟用户家目录
2、vim /etc/vsftpd/vsftpd.conf				修改配置文件
	local_root=/var/ftp/$USER
	user_sub_token=$USER
3、systemctl restart vsftpd				重启服务

linux之ftp服务_第7张图片在这里插入图片描述

五、ftp服务测试

1、服务器端操作

1)、在防火墙过滤规则中加入ftp服务:

firewall-cmd --list-all
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

linux之ftp服务_第8张图片

2)、使selinux处于不生效状态

vim /etc/vsftpd.vdftpd.conf			
	SELINUX=disable
	SELINUXTYPE=targeted

linux之ftp服务_第9张图片

2、客户端操作

1)、客户端访问

lftp ip				匿名访问ftp服务器
lftp ip -u user		指定用户user去访问ftp服务器

匿名用户:
linux之ftp服务_第10张图片
本地用户:
linux之ftp服务_第11张图片
报错原因

500				文件系统权限过大
530				用户认证失败
550				服务本身功能未开放
553				本地文件权限过小

你可能感兴趣的:(linux操作系统)