ftp服务

1.ftp简介

网络文件共享服务主流的主要有三种,分别是ftp、nfs、samba。
在FTP的使用当中,用户经常遇到两种概念:下载和上传

2.ftp架构

FTP工作于应用层,监听于tcp的21号端口,是一种C/S架构的应用程序。

我们最常用的ftp应用程序是vsftpd

3.用户认证

ftp的用户主要有三种:

  • 虚拟用户:仅用于访问某特定服务中的资源
  • 系统用户:可以登录系统的真实用户
  • 匿名用户

4.vsftpd配置

  • /etc/pam.d/vsftpd //vsftpd用户认证配置文件
  • /etc/vsftpd/ //配置文件目录
  • /etc/vsftpd/vsftpd.conf //主配置文件

//匿名用户(映射为ftp用户)的共享资源位置是/var/ftp
//系统用户通过ftp访问的资源位置为用户的家目录
//虚拟用户通过ftp访问的资源位置为给虚拟用户指定的映射成为的系统用户的家目录

5.vsftpd常见的配置参数

  • anonymous_enable=YES 启用匿名用户登录
  • anon_upload_enable=YES 允许匿名用户上传
  • anon_mkdir_write_enable=YES 允许匿名用户创建目录,但是不能删除
  • anon_other_write_enable=YES 允许匿名用户创建和删除目录
  • ocal_enable=YES 启用本地用户登录
  • write_enable=YES 允许本地用户有写权限
  • local_umask=022 通过ftp上传文件的默认遮罩码
  • chroot_local_user=YES 禁锢所有的ftp本地用户于其家目录中

实例:

配置匿名用户ftp(不推荐,不安全)

服务端配置:

 	//安装vsftpd服务
	[root@xaii-server ~]# yum -y install vsftpd


	//关闭防火墙和selinux,并开启vsftpd服务,设置为开机自动启动
	[root@xaii-server ~]# systemctl stop firewalld
	[root@xaii-server ~]# setenforce 0 
	[root@xaii-server ~]# systemctl start vsftpd
	[root@xaii-server ~]# systemctl enable vsftpd

	//修改vsftpd的主配置文件,允许匿名用户创建和删除目录,上传等功能
	 12 anonymous_enable=YES
	 13 anon_mkdir_write_enable=YES
	 14 anon_other_write_enable=YES
	 15 anon_upload_enable=YES

	//进入/var/ftp/pub中创建三个文件
	[root@xaii-server pub]# touch lizhao
	[root@xaii-server pub]# touch messi
	[root@xaii-server pub]# touch leo
	[root@xaii-server pub]# ll
	总用量 0
	-rw-r--r--. 1 root root 0 218 12:01 leo
	-rw-r--r--. 1 root root 0 218 12:01 lizhao
	-rw-r--r--. 1 root root 0 218 12:01 messi


	//将pub目录的权限设置为777
	[root@xaii-server ftp]# chmod 777 pub

客户端:
匿名登录,并将三个文件下载到本地

	//下载并安装lftp命令
	[root@xaii-client ~]# yum -y install lftp


	//匿名登录(-u是指定用户,匿名登录用户名为ftp)
	[root@xaii-client ~]# lftp -u ftp 192.168.157.33
	口令:  (直接回车)
	lftp ftp@192.168.157.33:~> ls            
	drwxr-xr-x    2 0        0               6 Mar 23  2017 pub
	lftp ftp@192.168.157.33:/> cd pub
	lftp ftp@192.168.157.33:/pub> ls
	-rw-r--r--    1 0        0               0 Feb 18 15:01 lizhao
	-rw-r--r--    1 0        0               0 Feb 18 15:01 messi
	-rw-r--r--    1 0        0               0 Feb 18 15:01 leo


	//mget可以同时下载多个文件(若下载目录,则用mirror)
	lftp ftp@192.168.157.33:/pub> mget lizhao messi leo 
	Total 3 files transferred
	
	
	//退出到本地查看是否下载成功
	lftp ftp@192.168.157.33:/pub> exit 
	[root@xaii-client ~]# ls
	anaconda-ks.cfg  leo  lizhao  messi

	
	//创建一个目录,在服务端查看是否为匿名创建
	lftp ftp@192.168.157.33:/pub> mkdir aaa
	mkdir 成功, 建立 `aaa'
	[root@xaii-server pub]# ll
	总用量 0
	drwx------. 2 ftp  ftp  6 218 12:13 aaa


	//在本地创建一个文件asamu,利用匿名用户上传到ftp服务端
	[root@xaii-client ~]# touch asamu
	[root@xaii-client ~]# lftp -u ftp 192.168.157.33
	口令: 
	lftp ftp@192.168.157.33:/> cd pub/
	lftp ftp@192.168.157.33:/pub> put asamu
	[root@xaii-server pub]# ll
	总用量 0
	drwx------. 2 ftp  ftp  6 218 12:13 aaa
	-rw-------. 1 ftp  ftp  0 218 12:52 asamu

配置虚拟用户ftp(推荐使用)


	//配置虚拟用户需要用到db_load命令,查看提供该命令的软件包,然后下载安装
	[root@xaii-server ~]# yum provides *bin/db_load
	已加载插件:product-id, search-disabled-repos, subscription-manager
	This system is not registered with an entitlement server. You can use subscription-manager to register.
	xx/filelists_db                                                  | 3.4 MB  00:00:00     
	libdb-utils-5.3.21-20.el7.x86_64 : Command line tools for managing Berkeley DB databases
	源    :xx
	匹配来源:
	文件名    :/usr/bin/db_load


	libdb-utils-5.3.21-20.el7.x86_64 : Command line tools for managing Berkeley DB databases
	源    :@anaconda/7.4
	匹配来源:
	文件名    :/usr/bin/db_load


	//下载安装libdb-utils软件包
	[root@xaii-server ~]# yum -y install libdb-utils


	//创建文本格式的用户名、密码列表,例如若要添加两个用户tom、jerry,密码分别为123456
	[root@xaii-server ~]# vim /etc/vsftpd/vu.list
	[root@xaii-server ~]# cat /etc/vsftpd/vu.list 
	tom
	123
	jerry
	456
	
	
	//为了安全,将刚创建的文本格式用户名、密码文件使用db4工具转换成数据库文件
	 [root@xaii-server ~]# db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db
	[root@xaii-server ~]# ll /etc/vsftpd/
	总用量 36
	-rw-------. 1 root root   125 323 2017 ftpusers
	-rw-------. 1 root root   361 323 2017 user_list
	-rw-------. 1 root root  5107 218 12:51 vsftpd.conf
	-rwxr--r--. 1 root root   338 323 2017 vsftpd_conf_migrate.sh
	-rw-r--r--. 1 root root 12288 218 14:06 vu.db
	-rw-r--r--. 1 root root    18 218 13:48 vu.list
	
	
	查看vu.list和vu.db的文件类型
	[root@xaii-server vsftpd]# file vu.list
	vu.list: ASCII text
	[root@xaii-server vsftpd]# file vu.db
	vu.db: Berkeley DB (Hash, version 9, native byte-order)

	
	//为提高虚拟用户帐号文件的安全性,应将文件权限设置为600,以避免数据外泄
	[root@xaii-server vsftpd]# chmod 600 /etc/vsftpd/vu.*
	[root@xaii-server vsftpd]# ll
	-rw-------. 1 root root 12288 218 14:06 vu.db
	-rw-------. 1 root root    18 218 13:48 vu.list


	//添加虚拟用户的映射帐号、创建ftp根目录。例如要将使用的ftp根目录设置为/opt/vftp
	[root@xaii-server ~]# useradd -d /opt/vftp -s /sbin/nologin vftp
	[root@xaii-server ~]# chmod 755 /opt/vftp/
	[root@xaii-server ~]# ll -d /opt/vftp/
	drwxr-xr-x. 2 vftp vftp 62 218 14:19 /opt/vftp/


	//为虚拟用户建立PAM认证
	[root@xaii-server ~]# cp /etc/pam.d/vsftpd{,.bak} (将vsftp备份为vsftpd.bak)
	[root@xaii-server ~]# vim /etc/pam.d/vsftpd
	[root@xaii-server ~]# cat /etc/pam.d/vsftpd
	#%PAM-1.0
	auth required pam_userdb.so db=/etc/vsftpd/vu
	account required pam_userdb.so db=/etc/vsftpd/vu


	//修改vsftpd配置文件,添加虚拟用户支持
	[root@xaii-server ~]# vim /etc/vsftpd/vsftpd.conf 
	[root@xaii-server ~]# tail -2 /etc/vsftpd/vsftpd.conf 
	guest_enable=YES
	guest_username=vftp


	//为不同的虚拟用户建立独立的配置文件,需要先创建一个空目录用来存放虚拟用户的配置文件
	[root@xaii-server ~]# cd /etc/vsftpd/
	[root@xaii-server vsftpd]# mkdir user_config
	[root@xaii-server vsftpd]# tail -2 /etc/vsftpd/vsftpd.conf 
	user_config_dir=/etc/vsftpd/user_config
	allow_writeable_chroot=YES


	//设置tom用户可上传文件、创建目录
	[root@xaii-server ~]# cd /etc/vsftpd/user_config/
	[root@xaii-server user_config]# vim tom
	[root@xaii-server user_config]# cat tom
	anon_upload_enable=YES
	anon_mkdir_write_enable=YES
	anon_other_write_enable=YES
	local_root=(指定tom用户的上传路径)
	
	//设置jerry用户只有默认的下载权限,只需要创建一个名为jerry的空文件即可
	[root@xaii-server user_config]# touch jerry
	[root@xaii-server user_config]# ll
	总用量 4
	-rw-r--r--. 1 root root  0 218 14:34 jerry
	-rw-r--r--. 1 root root 79 218 14:32 tom

验证虚拟用户:

	//tom用户验证(上传文件):
	[root@xaii-client ~]# lftp -u tom 192.168.157.33
	口令: 123
	lftp tom@192.168.157.33:~> put iphone(本地创建的一个文件) 
	
	
	//在客户端查看:
	[root@xaii-server vftp]# ll
	总用量 0
	-rw-------. 1 vftp vftp 0 218 14:54 iphone


	//tom用户下载服务段的woshitom文件
	lftp tom@192.168.157.33:/> get woshitom
	[root@xaii-client ~]# ll
	-rw-r--r--  1 root root    0 219 01:45 iphone
	-rw-r--r--  1 root root    0 219 01:57 woshitom

	
	//tom创建目录
	lftp tom@192.168.157.33:/> mkdir hehe
	mkdir 成功, 建立 `hehe'
	[root@xaii-server vftp]# ll
	总用量 0
	drwx------. 2 vftp vftp 6 218 15:01 hehe


	//jerry用户只能下载,不能进行其他操作
	[root@xaii-client ~]# lftp -u jerry 192.168.157.33
	口令: 456
	lftp jerry@192.168.157.33:/> get woshijerry
	lftp jerry@192.168.157.33:/> exit 
	[root@xaii-client ~]# ls
	iphone  woshijerry  woshitom


	//jerry用户不能上传和创建目录
	lftp jerry@192.168.157.33:/> put leo
	put: Access failed: 550 Permission denied. (leo)
	
	lftp jerry@192.168.157.33:/> mkdir haha
	mkdir: Access failed: 550 Permission denied. (haha)

//注意:虚拟用户是通过匿名访问的,所以必须开启匿名访问功能!!!只需开启匿名登录即可,其他匿名功能不必开启!!!否则,jerry用户无法验证!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值