Centos7#基础服务之FTP文件服务

1、ftp文件服务介绍

文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP 基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。Unix/Linux使用较为广泛的FTP服务器端软件为Vsftpd 。
  协议: ftp 文件传输协议
  客户端软件:lftp(推荐)、浏览器、资源管理器、ftp

FTP传输模式介绍 (主动模式和被动模式)
  vsftpd的被动模式是默认开启的,可以关闭,主动模式永远开启,不能关闭
  主动模式: 21端口负责建立tcp连接,20端口负责传输数据
  client server (C/S模式)  
  1024-------->21 负责会话连接
  1024<--------20 负责数据传输
  高安全区域 防火墙 低安全区域
  被动模式:21号端口负责建立tcp连接,1024+存放数据等待客户端来拿数据
  client server (C/S模式)
  1024-------->21 负责会话连接
  1024-------->1024+存放数据等待客户端来拿数据
  使用什么模式连接服务器是客户端说了算
  能不能接受那个模式是服务器说了算
  服务器关闭被动模式:
  [root@xingdian ~]# vim /etc/vsftpd/vsftpd.conf
  pasv_enable=NO
  客户端关闭被动模式:
  [root@xingdian ~]# lftp 172.16.70.251
  > set ftp:passive-mode off
  永久生效
  [root@xingdian ~]#vim /etc/lftp.conf
  set ftp:passive-mode off

ftp的安全:
  1.关闭匿名用户除下载权限之外的一切权限
  2.开启监控,也就是打开日志 /var/log/xferlog

lftp ftp.net.pku.edu.cn:~> ls
  `ls’ at 0 [重新连接前延时: 21]
  如果一次连接不上,那个延时会越来越长了,就挤不进ftp了。
  修改ftp客户端配置文件
  在/etc/lftp.conf中加入:
  set net:reconnect-interval-base 5     //设置重连间隔基数
  set net:reconnect-interval-multiplier 1.0 //设置重连间隔乘数

2、部署基本的ftp服务

①、安装
  server: yum -y install vsftpd
  clinet: yum -y install lftp
  ②、启动服务(server),服务器端启动vsftpd,客户端直接使用lftp即可
  [root@ftp-server ~]# systemctl start vsftpd //启动服务
  [root@ftp-server ~]# systemctl enable vsftpd //开机启动
  ③、ftp服务功能
  /var/ftp/是默认情况下ftp服务器存放数据的目录,已将自动创建一个pub目录。
  [root@ftp-server ~]# cd /var/ftp/ 注意:安全起见ftp根目录权限不可以超过755
  [root@ftp-server ~]# /etc/vsftpd/vsftpd.conf ftp的主配置文件

至此,客户端使用lftp作为匿名用户访问ftp-server,可以查看和下载ftp-server:/var/ftp/下面给的资源,但是不能上上传资源以及修改资源
  [root@ftp-client ~]# lftp 10.11.67.31
  lftp 10.11.67.31:~> ls
  lftp 10.11.67.31:/> cd software/
  lftp 10.11.67.31:/software> ls
  lftp 10.11.67.31:/software> get vim.tar.gz
  137087889 bytes transferred in 12 seconds (10.93M/s)
  下载文件get被允许
  lftp 10.11.67.31:/software> cd …
  lftp 10.11.67.31:/> ls
  lftp 10.11.67.31:/> mirror kvm
  Total: 1 directory, 4 files, 0 symlinks
  New: 4 files, 0 symlinks
  115437075 bytes transferred in 13 seconds (8.55M/s)
  下载目录mirror被允许
  lftp 10.11.67.31:/> mkdir kakaops
  mkdir: Access failed: 550 Permission denied. (kakaops)
  创建目录mkdir被拒绝
  lftp 10.11.67.31:~> put /mnt/kakaops.txt
  put: Access failed: 550 Permission denied. (kakaops.txt)
  上传文件put被拒绝
  lftp 10.11.67.31:/> mirror -R /mnt/
  mirror: Access failed: 550 Failed to change directory. (/mnt)
  1 error detected
  上传目录mirror -R被拒绝

3、部署ftp匿名用户上传功能

开启ftp上传功能(先打开文件上传功能,在/var/ftp下创建一个权限为777的共享目录)
  先修改ftp配置文件,打开上传功能
  [root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf

  anon_upload_enable=YES //上传文件
  anon_mkdir_write_enable=YES //上传目录

服务器在/var/ftp下创建一个777的目录
  [root@ftp-server ~]# mkdir /var/ftp/gongxiang
  [root@ftp-server ~]# chmod 777 /var/ftp/gongxiang/
  [root@ftp-server ~]# systemctl restart vsftpd
  这时候客户端可以在共享目录下上传文件,还可以创建目录,但是不能创建文件
  [root@ftp-client ~]# lftp 10.11.67.31
  lftp 10.11.67.31:~> cd gongxiang/
  lftp 10.11.67.31:/gongxiang> mkdir sunlizhen
  mkdir 成功, 建立 `sunlizhen’
  lftp 10.11.67.31:/gongxiang> put /mnt/kakaops.txt
  lftp 10.11.67.31:/gongxiang> ls
  -rw------- 1 14 50 0 Oct 26 09:40 kakaops.txt
  drwx------ 2 14 50 6 Oct 26 09:39 sunlizhen
  lftp 10.11.67.31:/gongxiang>
  匿名用户可以进行上传和下载,但也仅仅只限于10.11.67.31:/gongxiang/目录下

4、ftp本地账户访问问题

使用用户登录功能(ftp允许匿名用户访问,也可以在服务器端创建用户,设置密码进行登陆,创建用户的时候如果指定了创建用户的家目录,那么默认的共享目录变为用户家目录)
  useradd创建用户的问题
  [root@localhost]#useradd -d /opt/haha -G ftp -s /sbin/nologin haha
  Creating mailbox file: File exists //我的这里操作有报错,顺道说下这个问题
  linux系统下添加用户后,会在系统里自动加一个邮箱(系统邮箱),路径是:/var/spool/mail/用户名.
  所以删除用户的时候用userdel -r 删除干净
  可以直接用命令#rm -rf /var/spool/mail/用户名,这样就可以再次添加同一名字的用户.
  执行该命令后,如果出现这样的错误提示:
  useradd: warning: the home directory already exists.
  Not copying any file from skel directory into it.
  报错原因
  系统添加用户的标准步骤
  1.编辑/etc/passwd与/etc/group
  2.创建用户主目录
  3.从/etc/skel拷贝文件与目录
  4.让新用户获得其主目录与文件的拥有权限
  5.给新用户一个密码
  这说明用户的目录已经存在(这个可以是任何你设定的目录),不可再新建此目录,并非添加用户失败,可以忽略。创建用户的时候-d指定家目录,如果指定的家目录已经存在,会报这个警告,最好指定一个不存在的家目录,系统会自动创建。但不能递归创建目录。

创建用户(指定ftp组是为了规范分类,可以不指定)
  [root@ftp-server ~]# useradd -d /mnt/kakaops kakaops -G ftp
  [root@ftp-server ~]# passwd kakaops(123)
  客户端登陆(匿名登陆和用户登陆)
  [root@ftp-client ~]# lftp 10.11.67.31 -u kakaops (-u 指定用户,需要输入密码)
  口令:
  lftp kakaops@10.11.67.31:~> ls
  [root@ftp-client ~]# lftp 10.11.67.31 -u kakaops,123 (,后面加密码)
  lftp kakaops@10.11.67.31:~>
  使用用户登录的时候,共享目录默认为用户的家目录

匿名账户
  lftp 172.16.70.251 使用的是passwd文件内的默认账户,默认不需要写用户和密码,默认共享路径/var/ftp
  本地账户
  lftp 172.16.70.251 -u user02,1(密码) 使用的是除了ftp以外的账户,默认共享目录是账户自己的家目录

客户端常用命令

help //查看命令帮助手册
ls //查看文件
dir //查看文件=ls
cd pub //切换路径
get 文件 -o /root/Desktop
下载文件(-o指定下载文件存储目录,不指定默认下载到登陆目录下,下载多文件用空格隔开)
mirror 目录 指定的下载目录
下载目录(先指定下载需要目录,后面直接指定目录保存路径,不指定默认下载到登陆目录下)在这里如果指定了除了当前目录的其他目录,目录下载下来的是目录下的内容,目录会被拆分开。目录下载到当前目录下的话,会下载不拆开的目录
put 文件 //上传文件
mirror -R 目录 // 上传目录
mkdir 目录 // 客户端可以创建目录

5、附带补充FTP的配置文件选项的详细解释

vsftpd配置匿名用户常用选项

1、编辑配置文件
[root@qfedu.com vsftpd]# vim vsftpd.conf
write_enable=YES

anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

2、常用的匿名FTP配置项
anonymous_enable=YES                         		# 是否允许匿名用户访问
anon_umask=022                                    	# 匿名用户所上传文件的权限掩码
anon_root=/var/ftp                                  # 设置匿名用户的FTP根目录
anon_upload_enable=YES                      		# 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES               			# 是否允许匿名用户允许创建目录
anon_other_write_enable=YES               			# 是否允许匿名用户有其他写入权(改名,删除,覆盖)
anon_max_rate=0                                     # 限制最大传输速率(字节/秒)0为无限制

3、开启 vsftp 服务
[root@xingdian vsftpd]# systemctl start vsftpd
[root@xingdian vsftpd]# netstat -lnpt |grep vsftpd
tcp    0   0 0.0.0.0:21       0.0.0.0:*        LISTEN   34531/vsftpd

4、客户端登陆验证

vsftpd配置本地用户常用选项

1、创建测试用户
• 创建 zhangsan、lisi  密码都设置为 “123456”
[root@xingdian ~]# useradd zhangsan
[root@xingdian ~]# useradd lisi
[root@xingdian ~]# echo "123456" | passwd --stdin zhangsan
[root@xingdian ~]# echo "123456" | passwd --stdin lisi


2、修改配置文件
[root@qfedu.com ~]# vim /etc/vsftpd/vsftpd.conf
local_enable=YES
local_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES
write_enable=YES

3、常用的本地用户FTP配置项
local_enable=YES                                    # 是否允许本地系统用户访问
local_umask=022                                     # 本地用户所上传文件的权限掩码
local_root=/var/ftp                                   # 设置本地用户的FTP根目录
chroot_list_enable=YES                            	# 表示是否开启chroot的环境,默认没有开启
chroot_list_file=/etc/vsftpd/chroot_list        	
# 表示写在/etc/vsftpd/chroot_list文件里面的用户是不可以出chroot环境的。默认是可以的。
Chroot_local_user=YES                             	
# 表示所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的,和上面的相反。
local_max_rate=0                                    # 限制最大传输速率(字节/秒)0为无限制

4、添加用户到白名单
[root@qfedu.com ~]# vim /etc/vsftpd/user_list 
zhangsan
lisi

5、重启服务
[root@qfedu.com ~]# systemctl restart vsftpd 

6、登陆测试

vsftpd配置文件选项详解

listen=YES                                          # 是否以独立运行的方式监听服务
listen_address=192.168.4.1                       	# 设置监听FTP服务的IP地址
listen_port=21                                      # 设置监听FTP服务的端口号
write_enable=YES                                    # 是否启用写入权限(上传,删除文件)
download_enable=YES                                # 是否允许下载文件
dirmessage_enable=YES                           	# 用户切换进入目录时显示.message文件
xferlog_enable=YES                                  # 启用日志文件,记录到/var/log/xferlog
xferlog_std_format=YES                             	# 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式
connect_from_port_20=YES                       		# 允许服务器主动模式(从20端口建立数据连接)
pasv_enable=YES                                     # 允许服务器被动模式
pasv_max_port=24600                                	# 设置被动模式服务器的最大端口号
pasv_min_port=24500                                 # 设置被动模式服务器的最小端口号
pam_service_name=vsftpd                          	# 用户认证的PAM文件位置
(/etc/pam.d/vsftpd.vu)
userlist_enable=YES                                 # 是否启用user_list列表文件
userlist_deny=YES                                   # 是否禁用user_list中的用户
max_clients=0                                       # 限制并发客户端连接数
max_per_ip=0                                        # 限制同一IP地址的并发连接数
tcp_wrappers=YES                                    # 是否启用tcp_wrappers主机访问控制
chown_username=root                                 # 表示匿名用户上传的文件的拥有人是root,默认关闭
ascii_upload_enable=YES                             # 表示是否允许用户可以上传一个二进制文件,默认是不允许的
ascii_download_enable=YES               # 这个是代表是否允许用户可以下载一个二进制文件,默认是不允许的
nopriv_user=vsftpd                                  # 设置支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户
async_abor_enable=YES                               # 设定支持异步传输功能
ftpd_banner=Welcome to Awei FTP servers   			# 设定Vsftpd的登陆标语
guest_enable=YES                         	 # 设置启用虚拟用户功能
guest_username=ftpuser         				  # 指定虚拟用户的宿主用户
virtual_use_local_privs=YES        			    # 设定虚拟用户的权限符合他们的宿主用户
user_config_dir=/etc/vsftpd/vconf      			 # 设定虚拟用户个人Vsftp的配置文件存放路径
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值