搭建FTP服务

FTP简介

  • FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。
FTP端口
  • 默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
FTP数据连接模式
  • ftp有2种数据连接模式:命令连接和数据连接
    • 命名连接:是指文件管理类命令,始终在线的持久性连接,直到用户退出登录止
    • 数据连接:是指数据传输,按需创建及关闭的连接
      数据传输格式有以下两种:
      文件传输
      二进制传输
      数据传输模式有两种:
      主动模式:由服务器端创建数据连接
      被动模式:有客户端创建数据连接
      两种数据传输模式的建立过程:
      主动模式:命令连接——客户端以一个随机端口(随机端口大于1023)来连服务器端的21号端口;数据连接——服务器端以自己的20号端口去连客户端创建命令连接时使用的随机端口+1的端口号进行连接
      被动模式:命令连接——客户端以一个随机端口(随机端口大于1023)来连服务器端的21号端口,服务端并告知客服端一个随机端口;数据连接——客户端以创建命令连接的端口+1的端口号去连服务器端通过命令连接告知自己的一个随机端口号来创建数据连接

vsftpd常见的配置参数

参数作用
anonymous启用匿用户登录
anon_upload_enable=YES允许匿名用户上传
anon_mkdir_write_enable=YES允许匿名用户创建目录,但不能删除(与anon_other_write_enable连用)
anon_orther_write_enable=YES允许匿名用户将有写操作,例如删除和重命名目录
local_enable=YES
write_enable=YES允许本地用户有写权限
local_umask=022通过ftp上传文件的默认遮罩码
chroot_local_user=YES禁锢所有的ftp本地用户于家目录
chroot_list_enable=YES开启禁锢文件列表,需要与chroot_list_file参数一起使用
chroot_list_file=/etc/vsftpd/chroot_list指定禁锢文件列表路径,在此文件里面的用户将被禁锢在其家目录中
allow_writeable_chroot=YES允许被禁锢的用户家目录有写权限
xferlog_enable=YES是否启用传输日志,记录ftp传输过程
xferlog_std_format=YES传输日志是否使用标准格式
xferlog_file=/var/log/xferlog指定传输日志存储位置
chown_uploads=YES是否启用改变上传文件属主的功能
chown_username=whoever指定要将上传的文件的属主改为那个用户,此用户必须在系统中存在
pam_service_name=vsftpd指定vsftpd使用/etc/pam.d下的哪个pam配置文件进行用户认证
userlist_enable=YES是否启用控制用户登录的文件列表:默认为/etc/vsftpd/user_list文件
userlist_deny=YES是否拒绝userlist指定的文件列表中存在的用户登录FTP
max_clients=#最大并发连接数
max_per_ip=#每个IP可同时发起的并发请求
anon_max_rate匿名用户的最大传输速率,单位“字节/秒”
local_max_rate本地用户的最大传输速率,单位“字节/秒”
dirmessage_enable=YES启用某目录下.message描述信息,假定有个目录为/upload,再其下创建一个文件名为.message,在文件内写入一些描述信息,则当用户切换至/upload目录下时会自动显示.message文件中的内容
message_file设置访问一个目录是获得的目录信息文件的文件名,默认是.message
idle_session_timeout=600设置默认的都开不活跃session的时间
data_connection_timeout=120设置数据传输超时时间
ftpd_banner=“INFO”制定欢迎信息,登录ftp时自动显示

搭建FTP服务
ftp

vsftpd配置

/etc/pam.d/vsftpd  //vsftpd用户认证配置文件
[root@localhost ~]# vim vsftpd.conf     //配置文件目录
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf //主配置文件
//匿名用户(映射为ftp用户)的共享资源位置是/var/ftp
//系统用户通过ftp访问的资源位置为用户的家目录
//虚拟用户通过ftp访问的资源位置为给虚拟用户指定的映射成为的系统用户的家目录

安装vsftpd
2.配置匿名用户ftp
3.配置虚拟用户ftp
4.配置系统用户ftp
ftp的使用场景以及如何安装与配置

要求:
1.安装并配置完成后要使用ftp客户端工具登录验证

匿名用户ftp

安装vsftpd
[root@localhost ~]# yum -y install vsftpd

[root@localhost ~]# systemctl enable --now vsftpd
//启动

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
// 关闭防火墙
[root@localhost ~]# useradd toto
[root@localhost ~]# echo '123'|passwd --stdin toto

匿名 用户默认开启,若没有开启则将NO改为YES
anonymous_enable=YES  //
[root@localhost ~]# systemctl restart vsftpd 重启服务

匿名用户上传功能打开取消注释
anon_upload_enable=YES

anon_mkdir_write_enable=YES//创建文件
anon_other_write_enable=YES

[root@localhost ~]# setfacl  -m u:ftp:rwx /var/ftp/pub/
[root@localhost ~]# getfacl /var/ftp/pub/

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201014151255457.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h3am9z,size_16,color_FFFFFF,t_70#pic_center)

关闭anon_mkdir_write_enable=YES	允许匿名用户创建目录,但是不能删除
anon_other_write_enable=YES	允许匿名用户创建和删除目录
#anon_mkdir_write_enable=YES
#anon_other_write_enable=YES

在这里插入图片描述
不能删除只能上传文件
在这里插入图片描述

[root@localhost ~]# ll /var/ftp/pub/
total 4
-rw-------. 1 ftp ftp 1553 Oct 14 15:14 h.sh
在vim /etc/vsftpd/vsftpd.conf 
local_umask=022
anon_umask=022


[root@localhost ~]# ll /var/ftp/pub/
total 4
-rw-r--r--. 1 ftp ftp 1553 Oct 14 15:30 h.sh
[root@localhost ~]# 
vsftpd虚拟用户配置
安装vsftpd
[root@localhost ~]# yum -y install vsftpd

[root@localhost vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@localhost vsftpd]# vim vu.list
[root@localhost vsftpd]# ls
ftpusers   vsftpd.conf             vu.list
user_list  vsftpd_conf_migrate.sh

//将刚创建的文本格式用户名、密码文件使用db4工具转换成数据库文件

[root@localhost vsftpd]# db_load -T -t hash -f vu.list vh.db

//上面的-T表示转换,-t表示加密方式使用hash算法加密


//为提高虚拟用户帐号文件的安全性,应将文件权限设置为600,以避免数据外泄
[root@localhost vsftpd]# chmod 600 vu.*
[root@localhost vsftpd]# ll
total 36
-rw-------. 1 root root   125 Apr 24 11:01 ftpusers
-rw-------. 1 root root   361 Apr 24 11:01 user_list
-rw-r--r--. 1 root root 12288 Oct 14 16:02 vh.db
-rw-------. 1 root root  5128 Oct 14 15:50 vsftpd.conf
-rwxr--r--. 1 root root   348 Apr 24 11:01 vsftpd_conf_migrate.sh
-rw-------. 1 root root    18 Oct 14 15:58 vu.list


//添加虚拟用户的映射帐号、创建ftp根目录。例如要将使用的ftp根目录设置为/var/ftproot, 
//映射帐号的名称为vftp,可以执行以下操作
[root@localhost vsftpd]# useradd -d /opt/ftp -s /sbin/nologin vftp


[root@localhost ~]# ll /opt/
total 0
drwx------. 2 vftp vftp 62 Oct 14 16:10 ftp
//为虚拟用户建立PAM认证
[root@localhost ~]# cd /etc/pam.d/
[root@localhost pam.d]# vim vsftpd

#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vh
account required pam_userdb.so db=/etc/vsftpd/vh
~                                                        
~       
//修改vsftpd配置文件,添加虚拟用户支持
vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_user_username=vftp

//为不同的虚拟用户建立独立的配置文件
新建hehe目录
[root@localhost vsftpd]# mkdir hehe
vim /etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd
userlist_enable=YES
guest_enable=YES
guest_username=vftp
user_config_dir=/etc/vsftpd/hehe
allow_writeable_chroot=YES


//有了上述配置后,就可以在/etc/vsftpd/vusers_dir目录中为每个虚拟用户分别建立配置文件了。 
//例如,若要使用虚拟用户tom能够上传文件、创建目录,而jerry只有默认的下载权限, 
//可以执行以下操作**

[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf 

pam_service_name=vsftpd
userlist_enable=YES
guest_enable=YES
guest_username=vftp
user_config_dir=/etc/vsftpd/hehe
allow_writeable_chroot=YES

[root@localhost hehe]# touch tom

[root@localhost hehe]# vim jerry

anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES


[root@localhost hehe]# systemctl restart vsftpd //重启服务

在windows上查看
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


ftp使用方法

      ftp [-vdng] [用户名:密码@<FQDN>]|<IP地址>|

          < 主机名> <IP地址>:需要连接的FTP服务器的IP地址FQDN

           -v :显示远程服务器的所有响应信息

           -d :使用调试方式访问FTP服务器

           -n :限制ftp的自动登录,即当登录到FTP服务器时,不自动执行  .netrc文件



         进入FTP中可以可以使用的命令详解
         ```

           ![命令[参数]]  :在FTP客户端中执行命令

           open <FQDN>|<IP地址>:打开指定的FTP服务器

           bye :退出FTP会话过程 

           cd 目录:切换FTP服务器的当前目录。

           dir [目录][本地文件]:显示FTP服务器目录,并将结果存入本地文件 

           put 文件:将单个文件上传到FPT服务器

           mput: 将多个文件上传到FTP服务器

           get 文件:从FTP服务器下载单个文件到本地当前目录

           mget 文件:从FTP服务器下载多个文件到本地当前目录

           delete 文件名:FTP服务器上的文件

           case :在使用mget时,将远程主机文件名中的大写转为小写字母

           pwd :显示 远程主机的当前工作目录。

           rmdir 目录名:删除FTP服务器上的目录
           mkdir  只能创建创建目录不能创建文件
           
  lftp命令使用

  lftp ftp://[用户名:密码@]<FQDN>|<IP地址> [:端口]

  lftp ftp://<FQDN>|<IP 地址> -p port -u 用户名,密码


  help:查看全部可操作的命令

  ls : 显示FTP服务器文件列表

  !ls: 显示本地文件列表

  cd: 切换远端目录

  !cd: 切换本地目录

  get: 从FTP服务器下载单个文件到本地当前目录

  mget: 从FTP服务器下载多个文件到本地当前目录

  pget :使用多个线程来下载远端文件

  put : 将单个文件上传到FTP服务器

  mput :将多个文件上传到FTP服务器

  mv :移动FTP服务器上的文件

  rm: 删除FTP服务器上的文件 (使用参数 -r 递归删除)

  mrm: 删除FTP服务器上的多个目录

  mkdir :在FTP服务器上建立目录

  pwd : 显示日前FTP服务器所有目录

  lpwd: 显示本地目录

  exit :退出ftp会话过程
[root@localhost ~]# yum -y install lftp ftp

[root@localhost ~]# ftp 192.168.11.131
Connected to 192.168.11.131 (192.168.11.131).
220 (vsFTPd 3.0.3)
Name (192.168.11.131:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

ftp> get h.sh
local: h.sh remote: h.sh
227 Entering Passive Mode (192,168,11,131,183,166).
150 Opening BINARY mode data connection for h.sh (1553 bytes).
226 Transfer complete.
1553 bytes received in 0.000108 secs (14379.63 Kbytes/sec)
ftp> 


[root@localhost ~]# ls
anaconda-ks.cfg  h.sh  vsftpd.conf
[root@localhost ~]# 

lftp
[root@localhost ~]# lftp -u tom,123 192.168.11.131


[root@localhost ~]# lftp -u tom,123 -e "get h.sh;exit" 192.168.11.131

lftp tom@192.168.11.131:~> mirror  hehe  不加-R表示下载

[root@localhost ~]# ls
anaconda-ks.cfg  vsftpd.conf
[root@localhost ~]# ls
anaconda-ks.cfg  hehe  vsftpd.conf


[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# cat user_list 


# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
[root@localhost vsftpd]# 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先我们创建一个用户账户用于登录FTP进行操作。右键点击桌面的我的点击选择管理选项,进入管理界面打开本地用户和组选项,我们可以看到列表中的用户选项,然后右键用户选项,在下拉菜单中选择新用户,开始建立我们的用户,填写用户名称以及密码。描述可以不填。然后点击创建。创建完成在右边的用户列表中就可以看到我们创建的用户了。创建用户完成后我们开始添加IIS程序服务。打开电脑的开始菜单找到控制面板选项,打开进入。进入控制面板界面找到程序选项,点击下方的卸载程序按钮,进入到安装程序列表界面。进入到程序和功能选项栏目,我们可以看到左上方的菜单栏中有一个打开或关闭Windows功能选项,点击进入。进入到打开或关闭Windows功能界面,我们在好到Internet信息服务,然后点击打开在FTP服务器前面打勾,也就是把其子菜单的FTP服务FTP扩展性打勾,然后点击下方的确定按钮。添加完成 IIS服务之后,开始创建我们的FTP站点,右键点击我的电脑选择管理,然后找到服务和应用程序选项点击打开,接着点击Internet信息服务管理--此时我们可以看到右边出现了一个连接框。点击打开连接框下面的本地主机主页,然后可以看到应用程序池和网站选项,我们右键点击网站选择添加网站。然后在弹出的添加网站框里面输入我们的网站名称,物理路径也就是我们的FTP本地文件夹,我们可以在磁盘里面新建好,然后选择添加,IP地址选择我们本机的IP地址。新建完成我们的FTP之后,我们可以看到网站的下方多出了一个我们刚刚建立的网,右键点击网站名称,选择添加FTP站点发布,然后开始绑定和SSL设置,端口号选择2121.IP地址填写本机IP地址。然后我们打开电脑的浏览器在上方的地址栏里面输入FTP://IP地址:2121点击回车就可以看到我们的FTP服务器已经添加成功了我们可以在添加的本地文件夹里面来管理我们FTP服务器文上传与下载。然后进入身份验证设置选项,我们根据个人用途选择身份验证的基本要求,已经用户的相关权限,设置完毕点击完成选项。此时会提醒我们FTP站点发布成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值