zoukankan      html  css  js  c++  java
  • vsftpd服务器配置与使用

    1、ftp简介

    网络文件的共享主流的主要有三种,分别为ftpnfssamba

    ftp用于internet上的控制文件的双向传输

    上传和下载的操作

    下载 上传
    将主机中的内容拷贝到计算机上 将文件从计算机拷贝到主机上

    2、ftp构架

    FTP工作应用层,其监听端口为tcp21,其是一种C/S架构的应用程序,其有多种客户端工具

    客户端工具 服务端软件
    ftp wu-ftpd
    Iftp,Iftpget proftpd
    wget.curl pureftp
    filezilla vsftpd
    gftp ServU

    3、ftp数据连接模式

    3.1、连接模式分类

    ftp有两种数据连接模式:命令连接和数据连接

    • 命令连接模式:是指文件管理命令,始终在线的持久性连接,直到用户退出登录为止(相当于通过命令连接ftp并且操作)

    • 数据连接模式:是指数据传输,按需创建及其关闭

      3.2、数据传输格式和传输模式

      数据传输格式有一下两种:

      • 文件传输
      • 二进制传输

      数据传输:

      • 主动模式:由服务器端创建数据连接
      • 被动模式:由客户端创建数据连接

      说白了,就是客户端上传为被动

      4、ftp的配置文件

      文件位置 说明
      /etc/vsftpd 配置文件目录
      /etc/vsftpd 配置文件目录
      /etc/vsftpd/vsftpd.conf 主配置文件

      vsftp常见配置文件参数:

      参数 作用
      anoymous_enable=YES 启动匿名用户
      anon_upload_enable=YES 允许匿名用户上传
      anon_mkdir_write_enable=YES 允许用户创建目录,但是不能删除
      anon_other_write_enable=YES 允许匿名用户创建和删除目录
      local_enable=YES 启用本地用户登录
      write_unask=022 ftp上传默认遮掩码
      chroot_list_user=YES 禁锢所有本地ftp用户于其家目录中
      chroot_list_enable=YES 开启禁锢文件列表,需要chroot_list_file一起使用
      chroot_list_file=/etc/vsftpd/chroot_list 禁锢文件路径,在文件里面的用户将禁锢在其家目录中
      allow_writeable_chroot=YES 被禁锢用户的家目录有写的权限
      xferlog_enabel=YES 是否传输日志(记录ftp传输过程)
      xferlog_enable=/var/log/xferlog 日志储存位置
      chown_uploads=YES 是否改变上传文件的属主功能
      chown_username=whoever 指定上传文件属主该为那个用户
      pam_server_name=vsftp 指定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 本地最大传输速率
      message_file 访问目录时可以查看目录信息
      data_connection_timeout=120 设置传输超时时间
      idle_session_timeout=600 默认不活跃session时间
      dirmessage_enable 启用某目录下的,message描述信息

    5、安装vsftpd

    [root@localhost ~]# yum install -y vsftpd
    Loaded plugins: product-id, search-disabled-repos, subscription-
                  : manager
    This system is not registered with an entitlement server. You can use subscription-manager to register.
    name                                           | 3.6 kB     00:00     
    Resolving Dependencies
    --> Running transaction check
    ---> Package vsftpd.x86_64 0:3.0.2-25.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ======================================================================
     Package       Arch          Version                Repository   Size
    ======================================================================
    Installing:
     vsftpd        x86_64        3.0.2-25.el7           name        171 k
    
    Transaction Summary
    ======================================================================
    Install  1 Package
    
    Total download size: 171 k
    Installed size: 353 k
    Downloading packages:
    vsftpd-3.0.2-25.el7.x86_64.rpm                   | 171 kB   00:00     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : vsftpd-3.0.2-25.el7.x86_64                         1/1 
      Verifying  : vsftpd-3.0.2-25.el7.x86_64                         1/1 
    
    Installed:
      vsftpd.x86_64 0:3.0.2-25.el7                                        
    
    Complete!
    #启动ftpd
    [root@localhost ~]# systemctl status vsftpd
    ● vsftpd.service - Vsftpd ftp daemon
       Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
       Active: active (running) since Wed 2020-04-01 03:41:21 EDT; 27s ago
      Process: 1383 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
     Main PID: 1384 (vsftpd)
       CGroup: /system.slice/vsftpd.service
               └─1384 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
    
    Apr 01 03:41:21 localhost.localdomain systemd[1]: Starting Vsftpd f...
    Apr 01 03:41:21 localhost.localdomain systemd[1]: Started Vsftpd ft...
    Hint: Some lines were ellipsized, use -l to show in full.
    [root@localhost ~]# 
    #查看端口
    [root@localhost ~]# ss -antl | grep 21
    LISTEN     0      32          :::21                      :::*                  
    [root@localhost ~]# 
    

    vsftp虚拟用户设置

    #配置网络仓库和下载依赖
    [root@localhost yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
    --2020-04-01 03:57:17--  http://mirrors.163.com/.help/CentOS7-Base-163.repo
    Resolving mirrors.163.com (mirrors.163.com)... 59.111.0.251
    Connecting to mirrors.163.com (mirrors.163.com)|59.111.0.251|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 1572 (1.5K) [application/octet-stream]
    Saving to: ‘CentOS7-Base-163.repo’
    
    100%[=======================================================================>] 1,572       --.-K/s   in 0s      
    
    2020-04-01 03:57:19 (95.2 MB/s) - ‘CentOS7-Base-163.repo’ saved [1572/1572]
    
    [root@localhost yum.repos.d]# sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS7-Base-163.repo 
    [root@localhost yum.repos.d]# set 's/^enabled=.*/enabled=1/g' CentOS7-Base-163.repo 
    [root@localhost yum.repos.d]# yum repolist
    Loaded plugins: product-id, search-disabled-repos, subscription-manager
    This system is not registered with an entitlement server. You can use subscription-manager to 
    .........
    [root@localhost yum.repos.d]#  yum -y install epel-release 
    [root@localhost yum.repos.d]#  yum -y install vsftpd
    #创建用户列表,奇数行为用户,偶数行为密码
    [root@localhost yum.repos.d]# printf "lzj
    123
    " >> /etc/vsftpd/vu.list
    [root@localhost yum.repos.d]# printf "lal
    345
    " >> /etc/vsftpd/vu.list
    [root@localhost yum.repos.d]# cat /etc/vsftpd/vu.list 
    lzj								
    123								
    lal			
    345
    [root@localhost yum.repos.d]# 
    #下载db4工具
    [root@localhost yum.repos.d]# yum install -y db4*
    #将刚创的密码表转换成数据库
    [root@localhost yum.repos.d]#  db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db
    #提高虚拟账户的安全性,设置文件权限为600
    [root@localhost yum.repos.d]# chmod 600 /etc/vsftpd/vu*
    [root@localhost yum.repos.d]# ll /etc/vsftpd/vu*
    -rw-------. 1 root root 12288 Apr  1 04:26 /etc/vsftpd/vu.db
    -rw-------. 1 root root    16 Apr  1 04:14 /etc/vsftpd/vu.list
    [root@localhost ~]# vim /etc/pam.d/vsftpd 
    auth       required     pam_userdb.so db=/etc/vsftpd/vu
    account    required     pam_userdb.so db=/etc/vsftpd/vu
    
    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
    #修改vsftpd配置文件,添虚拟用户支持
    guest_enable=YES
    guest_username=vftp
    #为不同的虚拟用户建立不同的配置文件
    user_config_dir=/etc/vsftpd/vuser_dir
    allow_writeable_chroot=YES
    #创建主用户
    [root@localhost ~]# useradd -d /var/ftproot/ -s /sbin/nologin vftp
    #让lzj用户可读可写可上传
    [root@localhost ~]# printf "anon_upload_enable=YES" >> /etc/vsftpd/vuser_dir/lzj   #允许上传
    [root@localhost ~]# printf "anon_mkdir_write_enable=YES" >> /etc/vsftpd/vuser_dir/lzj #允许写但不允许删
    #建立其他用户配置文件
    [root@localhost ~]# touch /etc/vsftpd/vuser_dir/lal
    #查看端口
    [root@localhost ~]# ss -antl | grep 21
    LISTEN     0      32          :::21                     :::*                  
    [root@localhost ~]# cd /var
    [root@localhost var]# touch ftproot/{1,2,3}
    #客户端
    [root@localhost ~]# lftp -u lzj,123 192.168.135.145
    lftp lzj@192.168.135.145:~> ls#刚开始别以为报错,只是加载慢过一会就好了
    Interrupt                          
    lftp lzj@192.168.135.145:~> 
    lftp lzj@192.168.135.145:~> ls
    -rw-r--r--    1 0        0               0 Apr 04 06:25 1
    -rw-r--r--    1 0        0               0 Apr 04 06:25 2
    -rw-r--r--    1 0        0               0 Apr 04 06:25 3
    lftp lzj@192.168.135.145:/> mkdir 123
    mkdir ok, `123' created
    lftp lzj@192.168.135.145:/> ls
    -rw-r--r--    1 0        0               0 Apr 04 06:25 1
    drwx------    2 1000     1000            6 Apr 04 06:29 123
    -rw-r--r--    1 0        0               0 Apr 04 06:25 2
    -rw-r--r--    1 0        0               0 Apr 04 06:25 3
    lftp lzj@192.168.135.145:/> put 123
    put: /root/123: No such file or directory
    lftp lzj@192.168.135.145:/> put geshi.sh 
    35 bytes transferred
    lftp lzj@192.168.135.145:/> ls
    -rw-r--r--    1 0        0               0 Apr 04 06:25 1
    drwx------    2 1000     1000            6 Apr 04 06:29 123
    -rw-r--r--    1 0        0               0 Apr 04 06:25 2
    -rw-r--r--    1 0        0               0 Apr 04 06:25 3
    -rw-------    1 1000     1000           35 Apr 04 06:32 geshi.s
    
    

    配置匿名用户

    #下载ftp服务
    [root@localhost ~]# yum install -y vsftpd
    #修改主配置文件,在最后一行添加
    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
    anon_upload_enable=YES #允许匿名用户上传
    anon_mkdir_write_enable=YES #允许匿名用户写和创建文件夹
    #重启服务
    [root@localhost ~]# systemctl restart vsftpd
    #停止防火墙和selinux
    [root@localhost ~]# systemctl stop firewalld
    [root@localhost ~]# setenforce 0
    #查看共享目录
    [root@localhost ~]# ls /var/ftp/
    01.sh  1  1234  2  3  4  pub  新建文本文档.txt  新文件夹  新文件夹 (2)
    [root@localhost ~]# 
    
    #客户端
    [root@localhost ~]# lftp -u ftp 192.168.135.145
    Password: 
    lftp ftp@192.168.135.145:~> ls 
    -rw-------    1 14       50             78 Apr 03 06:22 01.sh
    -rw-r--r--    1 0        0               0 Apr 03 06:15 1
    drwx------    2 14       50              6 Apr 03 06:22 1234
    -rw-r--r--    1 0        0               0 Apr 03 06:15 2
    -rw-r--r--    1 0        0               0 Apr 03 06:15 3
    -rw-r--r--    1 0        0               0 Apr 03 06:15 4
    drwxr-xr-x    2 0        0               6 Oct 30  2018 pub
    -rw-------    1 14       50             55 Apr 03 05:51 新建文本文档.txt
    drwx------    2 14       50              6 Apr 03 05:51 新文件夹
    drwx------    2 14       50              6 Apr 03 05:51 新文件夹 (2)
    lftp ftp@192.168.135.145:~> exit
    [root@localhost ~]# ls
    anaconda-ks.cfg  geshi.sh  httpd-2.4.38  httpd-2.4.38.tar.bz2  mysql-community-release-el7-5.noarch.rpm
    [root@localhost ~]# lftp -u ftp 192.168.135.145
    Password: 
    lftp ftp@192.168.135.145:~> get 1       #下载
    lftp ftp@192.168.135.145:/> mkdir 12309
    #报错原因没有将服务端的共享目录设置为777
    mkdir: Access failed: 550 Create directory operation failed. (12309)
    lftp ftp@192.168.135.145:/> 
    lftp ftp@192.168.135.145:/> mkdir 12309
    mkdir ok, `12309' created
    lftp ftp@192.168.135.145:/> ls
    -rw-------    1 14       50             78 Apr 03 06:22 01.sh
    -rw-r--r--    1 0        0               0 Apr 03 06:15 1
    drwx------    2 14       50              6 Apr 03 07:35 12309
    drwx------    2 14       50              6 Apr 03 06:22 1234
    -rw-r--r--    1 0        0               0 Apr 03 06:15 2
    -rw-r--r--    1 0        0               0 Apr 03 06:15 3
    -rw-r--r--    1 0        0               0 Apr 03 06:15 4
    drwxr-xr-x    2 0        0               6 Oct 30  2018 pub
    -rw-------    1 14       50             55 Apr 03 05:51 新建文本文档.txt
    drwx------    2 14       50              6 Apr 03 05:51 新文件夹
    drwx------    2 14       50              6 Apr 03 05:51 新文件夹 (2)
    lftp ftp@192.168.135.145:/> 
    
    

    配置系统用户

    #下载ftp服务
    [root@localhost ~]# yum install -y vsftpd
    #修改主配置文件,在最后一行添加
    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
    chroot_local_user=YES    #禁锢用户
    chroot_list_enable=YES	
    chroot_list_file=/etc/vsftpd/chroot_list #禁锢用户列表
    #创建系统用户和/etc/vsftpd/chroot_list 
    [root@localhost data]# useradd chroot1 -d /data
    [root@localhost data]# echo "123" | passwd --stdin chroot1
    [root@localhost data]# echo "chroot1" > /etc/vsftpd/chroot_list
    #重启并且关闭防火墙和selinux
    [root@localhost data]# systemctl restart vsftpd
    [root@localhost data]# systemctl stop firewalld
    [root@localhost data]# setenforce 0
    [root@localhost data]# touch 1 2 3 4
    #客户端
    [root@localhost ~]# lftp -u chroot1,123 192.168.135.145
    lftp chroot1@192.168.135.145:~> ls      
    lftp chroot1@192.168.135.145:~> ls
    -rw-r--r--    1 0        0               0 Apr 03 07:59 1
    -rw-r--r--    1 0        0               0 Apr 03 07:59 2
    -rw-r--r--    1 0        0               0 Apr 03 07:59 3
    -rw-r--r--    1 0        0               0 Apr 03 07:59 4
    lftp chroot1@192.168.135.145:~> 
    
    
    
  • 相关阅读:
    共享经济
    滑动用hammer
    js 数组去重 的5种方法
    js ajax上传图片到服务器
    js url图片转bese64
    去除移动端 a标签 点击有一个 阴影效果
    css 文字超出变 ... 点点点
    h5手势库 hammer.js
    xshell linux传文件
    IO流(Properties存取)
  • 原文地址:https://www.cnblogs.com/liuzhijun666/p/13127224.html
Copyright © 2011-2022 走看看