zoukankan      html  css  js  c++  java
  • vsftpd超实用技巧详解

    简介:

    vsftpd是“very secure FTP daemon”的缩写,是一个完全免费的、开放源代码的ftp服务器软件。
     

    工作原理:

    vsftpd使用ftp协议,该协议属于应用层协议。它是典型的c/s架构,ftp服务端用来存储文件,ftp客户端可以通过ftp协议连接服务端实现上传和下载资源。
    ftp使用tcp的21端口进行命令传输,然后用tcp的20端口进行数据传输(主动模式)。
     

    特点:

    非常高的安全性需求、带宽限制、良好的可伸缩性等。
     

    安装部署:

    yum install vsftpd ftp lftp -y
    

    PS:
    vsftpd为服务端软件;ftp、lftp为客户端工具,推荐使用lftp。
    部署详情可参照《如何在Centos服务器上搭建起Oracle10、VNC、以及FTP》
     

    启动服务:

    service vsftpd start
    systemctl start vsftpd
     

    查看状态:

    service vsftpd status
    systemctl status vsftpd
     

    用户登录:

    • 用本地用户登录需要输入用户名及密码验证。
    • 用ftp客户端匿名登录需要输入用户名及密码验证,匿名用户名为:ftp或者anonymous,密码为空。
    • 用lftp客户端匿名登录则不需要输入以上信息。
    本地用户登录:
    
    [root@TEST ~]# ftp
    ftp> open 8.8.8.8
    Connected to 8.8.8.8 (8.8.8.8).
    220 (vsFTPd 2.2.2)
    Name (8.8.8.8:root): root
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> 
    
    登录失败时:
    
    [root@TEST ~]# ftp 8.8.8.8
    Connected to 8.8.8.8 (8.8.8.8).
    220 (vsFTPd 2.2.2)
    Name (8.8.8.8:root): root
    331 Please specify the password.
    Password:
    530 Login incorrect.
    Login failed.
    ftp> close
    221 Goodbye.
    ftp> open 8.8.8.8
    Connected to 8.8.8.8 (8.8.8.8).
    220 (vsFTPd 2.2.2)
    Name (8.8.8.8:root): root
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> 
    
    ftp客户端匿名登录:
    
    [root@TEST ~]# ftp 8.8.8.8
    Connected to 8.8.8.8 (8.8.8.8).
    220 (vsFTPd 2.2.2)
    Name (8.8.8.8:root): ftp
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> 
    
    lftp客户端连接:
    
    [root@TEST ~]# lftp 8.8.8.8
    lftp 8.8.8.8:~> 
    

     

    下载命令:

    get用于下载单个文件:

    可以先切换到**本地指定目录**(data)进行文件的下载,保存:
    
    ftp> lcd /data1/
    Local directory now /data1
    ftp> cd /data2/
    ftp> get file001.txt
    

    ps:
    当客户端已经连接上服务端,cd是用于切换服务器中的目录命令,lcd是用于切换客户端本地的目录。
     

    mget用于批量下载:

    ftp> mget file00*
    Total 7 files transferred
    

     

    上传命令:

    put用于下载单个文件:

    要想使用上传命令,需要开启上传权限和可写权限,可往下看。

    直接上传不改名,可以省去-o refile:
    
    ftp> !dir
    file001.txt  file002.txt
    ftp> bin
    421 Timeout.
    ftp> put /etc/file003.txt
    501 bytes transferred
    ftp> !dir
    file001.txt  file002.txt  file003.txt
    

    PS:
    如果不知道本地目录有哪些文件,可以使用!dir查看;
    而且,一定要使用bin二进制传输!!!

    上传文件之后,并改名,就要带-o refile了:
    
    ftp> bin
    421 Timeout.
    ftp> put /etc/file003.txt -o file004.txt
    501 bytes transferred
    ftp> ls
    drwx------    2 14       50              6 Aug 08 06:27 file001.txt
    -rw-------    1 14       50            501 Aug 08 06:34 file002.txt
    -rw-------    1 14       50            501 Aug 08 06:34 file003.txt
    -rw-------    1 14       50            501 Aug 08 06:34 file004.txt
    

     

    mput用于批量上传:

    上传多个文件,可以使用putmput命令上传,多个文件之间用空格分隔;
    如果想使用通配符,只有mput命令支持:

    ftp> bin
    421 Timeout.
    ftp> put /etc/file005.txt /etc/file006.txt 
    1580 bytes transferred
    Total 2 files transferred
    ftp> ls
    drwx------    2 14       50              6 Aug 08 06:27 abc
    -rw-------    1 14       50           1079 Aug 08 06:40 file005.txt
    -rw-------    1 14       50            501 Aug 08 06:40 file006.txt
    
    ftp> bin
    421 Timeout.
    ftp> mput /etc/file00*
    1688 bytes transferred         
    Total 2 files transferred
    ftp> ls
    drwx------    2 14       50              6 Aug 08 06:27 abc
    -rw-------    1 14       50           1079 Aug 08 06:41 file005.txt
    -rw-------    1 14       50            501 Aug 08 06:41 file006.txt
    

     

    匿名用户权限:

    匿名用户的默认配置只能进行文件的读取和下载,不能进行写入和上传文件:

    lftp 8.8.8.8:~> put /etc/fstab 
    put: Access failed: 550 Permission denied. (fstab)
    lftp 8.8.8.8:/> mkdir abc
    mkdir: Access failed: 550 Permission denied. (abc)
    
    可以看到上传命令和创建命令都失败了,没有响应的权限!
    

    开启匿名用户创建文件,重命名,删除,上传权限:

    #开启上传权限
    anon_upload_enable=YES
    #开启创建文件权限
    anon_mkdir_write_enable=YES
    #开启重命名,删除权限
    anon_other_write_enable=YES
    

    重启服务,再次进入,发现还是没法创建目录,但是报错信息不一样,如下:

    lftp 8.8.8.8:/> mkdir abc
    mkdir: Access failed: 550 Create directory operation failed. (abc)
    

    这是因为目录没有写权限,给pub目录授权,如下:

    [root@localhost ~]# chmod o+w /var/ftp/pub/
    [root@localhost ~]# ll /var/ftp/pub/ -d
    drwxr-xrwx 3 root root 192 8月   7 08:37 /var/ftp/pub/
    

    再次进入,创建目录,如下:

    lftp 8.8.8.8:/pub> mkdir abc
    mkdir 成功, 建立 `abc'
    

    PS:
    要想匿名用户有写的权限,一是需要服务端配置文件开启写的权限,二是所在的目录本身有其他用户写的权限!
     

    禁止匿名用户登录:

    你甚至可以修改配置文件,只让本地用户登录:

    vim /etc/vsftpd/vsftpd.conf
    
    anonymous_enable=NO
    local_enable=YES
    

     

    故障解决:

    如果重启或者登陆服务器时,报错如下:

    [root@localhost ~]# systemctl restart vsftpd
    Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details.
    
    [root@localhost ~]# journalctl -xe
    -- Unit vsftpd.service has begun starting up.
    8月 08 02:59:14 localhost.localdomain vsftpd[12751]: 500 OOPS: bad bool value in config file for: anonymous_en
    8月 08 02:59:14 localhost.localdomain systemd[1]: vsftpd.service: control process exited, code=exited status=2
    

    解决办法:

    这种问题一般就是空格导致的,是每一行配置后面都不能有空格,也不能跟注释。

  • 相关阅读:
    219. Contains Duplicate II
    189. Rotate Array
    169. Majority Element
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    119. Pascal's Triangle II
    118. Pascal's Triangle
    88. Merge Sorted Array
    53. Maximum Subarray
    CodeForces 359D Pair of Numbers (暴力)
  • 原文地址:https://www.cnblogs.com/WoLykos/p/11812186.html
Copyright © 2011-2022 走看看