linux中的ftp(文件传输协议)服务

ftp(文件传输协议)服务

1.ftp的定义

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

2.ftp协议提供的软件

在rhel7中:vsftpd

3.部署ftp服务

ftp(文件传输协议)是Internet上常用的最老的网络协议之一,它的系统提供了通过网络与远程服务器进行传输的简单方法。ftp服务器包的名称为vsftpd,它代表Very Secure File Transfer Protocol Damon,服务器名称也叫做vsftpd。
默认配置文件让anonymous用户(匿名用户)只能下载位于chroot目录中的内容。
/var/ftp/这意味着远程ftp客户端能以anonymous用户或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)

步骤:
1)实验前先关闭内核级的加强形火墙

vim /etc/sysconfig/selinux  			##disabled

linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务
重启后:

getenforce 								

linux中的ftp(文件传输协议)服务

2)安装ftp服务并开启服务,安装lftp

yum install vsftpd -y
systemctl start vsftpd
systemctl enable vsftpd
systemctl status vsftpd

linux中的ftp(文件传输协议)服务

linux中的ftp(文件传输协议)服务

yum install lftp -y

linux中的ftp(文件传输协议)服务
3)设置火墙永久允许ftp服务

方法一:命令设置

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

linux中的ftp(文件传输协议)服务

linux中的ftp(文件传输协议)服务
方法二:图形设置

firewall-config

linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务

4.ftp服务的基本信息

软件安装包:vsftpd
默认发布目录:/var/ftp
协议接口:21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf
报错id解析:
500 文件系统权限过大
530 用户认证失败
550 服务本身功能未开放
553 本地文件系统权限过小

5

 vim /etc/vsftpd/vsftpd.conf 

linux中的ftp(文件传输协议)服务

anonymous_enable=YES/NO  ##匿名用户是否可以登录
 local_enable=YES/NO  	 ##本地用户是否可以登录
write_enable=YES/NO  	 ##ftp是否对登录用户可写

linux中的ftp(文件传输协议)服务

1)匿名用户设定:

匿名用户上传

vim /etc/vsftpd/vsftpd.conf
systemctl restar vsftpd 			##重启服务
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub

linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务
write_enable=YES
anon_upload_enable=YES

linux中的ftp(文件传输协议)服务

匿名用户家目录修改:
anon_root=/mnt
linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务

匿名用户上传文件默认权限修改:
anon_umask=055
linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务

匿名用户建立文件:
anon_mkdir_write_enable=YES|NO
linux中的ftp(文件传输协议)服务

linux中的ftp(文件传输协议)服务

匿名用户下载:
anon_world_readable_only=YESdd|NO ##no表示匿名用户可以下载
linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务

匿名用户删除:
anon_other_write_enable=YES|NO
linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务

匿名用户使用的用户身份修改 :
chown_uploads=YES
chown_username=student
chown_upload_mode=0644
linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务

linux中的ftp(文件传输协议)服务

最大上传速率:
anon_max_rate=102400
linux中的ftp(文件传输协议)服务
改前:
linux中的ftp(文件传输协议)服务
改后:
linux中的ftp(文件传输协议)服务

能够最大连接的客户端:
max_clients=1
linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务linux中的ftp(文件传输协议)服务

2)本地用户设定

local_enable=YES/NO ##本地用户登录限制
write_enable=YES/NO ##本地用户写权限限制
linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务

本地用户家目录修改:
local_root=/redhat
linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务

本地用户上传文件权限:
local_umask=077
linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务

限制本地用户浏览/目录:

所有用户被锁定到自己的家目录中
chroot_local_user=YES

限制之前:可以查看根目录
linux中的ftp(文件传输协议)服务

限制之后不能查看根目录

linux中的ftp(文件传输协议)服务

用户黑名单建立:

 chroot_local_user=NO  						 ##黑名单
 chroot_list_enable=YES
 chroot_list_file=/etc/vsftpd/chroot_list

linux中的ftp(文件传输协议)服务

linux中的ftp(文件传输协议)服务
黑名单的用户被锁在自己的家目录中
linux中的ftp(文件传输协议)服务
其他用户:
linux中的ftp(文件传输协议)服务
用户白名单建立:

 chroot_local_user=YES 						 ##白名单
 chroot_list_enable=YES
 chroot_list_file=/etc/vsftpd/chroot_list

linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务

linux中的ftp(文件传输协议)服务
限制本地用户登录:

vim /etc/vsftpd/ftpusers 					 ##用户黑名单

linux中的ftp(文件传输协议)服务

linux中的ftp(文件传输协议)服务

vim /etc/vsftpd/user_list  					 ##用户临时黑名单

linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务

用户白名单设定:

vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO

linux中的ftp(文件传输协议)服务
vim /etc/vsftpd/user_list ##参数设定,从文件变成用户白名单,只在名单中出现的用户可以登录ftp

linux中的ftp(文件传输协议)服务

6.ftp虚拟用户的设定:

步骤:
1)创建虚拟帐号身份:

 vim /vim /etc/vsftpd/userfile 					 ##文件名称任意

linux中的ftp(文件传输协议)服务

2)文件加密

db_load -T -t hash -f /etc/vsftpd/userfile /etc/vsftpd/userfile.db 		 ##加密

linux中的ftp(文件传输协议)服务

3)

vim /etc/pam.d/ftpuser 							 ##文件名称任意

auth(认证) required pam_userdb.so db=/etc/vsftpd/userfile(认证程序为pam)
account(帐号) required pam_userdb.so db=/etc/vsftpd/userfile(用程序来看一个这个文件里存在不存在)

linux中的ftp(文件传输协议)服务
4)

vim /etc/vsftpd/vsftpd.conf

写入:

pam_service_name=ftpuser ##默认系统用户不能登录
guest_enable=YES ##开启虚拟用户的功能

guest_username=ftp ##虚拟用户的身份指定

linux中的ftp(文件传输协议)服务
重启服务:
systemctl restart vsftpd

linux中的ftp(文件传输协议)服务

5)虚拟帐号家目录独立设定:用户只能查看自己的目录

vim /etc/vsftpd/vsftpd.conf

写入:

local_root=/var/ftpuserdir/$USER

user_sub_token=$USER

linux中的ftp(文件传输协议)服务
重启服务:
systemctl restart vsftpd

mkdir /var/ftpuserdir/redhat{1..3} -p


mkdir /var/ftpuserdir/westos{1..3}/pub
mkdir /var/ftpuserdir/westos1/file1
mkdir /var/ftpuserdir/westos2/file2
mkdir /var/ftpuserdir/westos3/file3

linux中的ftp(文件传输协议)服务

6)测试:

linux中的ftp(文件传输协议)服务

7.虚拟帐号配置独立

vim /etc/vsftpd/vsftpd.conf				##修改配置文件
user_config_dir=/etc/vsftpd/userconf	##指定虚拟用户的单独配置文件的目录
mkdir -p /etc/vsftpd/userconf

vim /etc/vsftpd/userconf/ftpuser1		##必须与自己的用户名相同
在此文件中设定配置文件中的所有参数,此文件的优先级高

linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务
linux中的ftp(文件传输协议)服务
测试:
linux中的ftp(文件传输协议)服务