FTP 是File Transfer Protocol(文件传输协议)的英文简称

本文原文地址:ubuntu16.04下安装FTP

我们选择相对比较安全的vsftpd

安装:

sudo apt-get install vsftpd

安装完成后,进程的状态控制:

sudo service vsftpd start/restart/stop/status

配置:

vsftp配置文件地址为:/etc/vsftpd.conf

    # 设置为YES时vsftpd以独立运行方式启动,设置为NO时以xinetd方式启动
    #(xinetd是管理守护进程的,将服务集中管理,可以减少大量服务的资源消耗)
    listen=YES

    # 同上,如果支持ipv6网络则有效
    listen_ipv6=NO

    # 是否支持匿名用户访问
    anonymous_enable=NO

    # 是否支持本地用户访问
    local_enable=YES

    # 是否开放本地用户写权限,即是否允许上传
    write_enable=YES

    # 本地用户上传文件的权限掩码
    local_umask=022

    # 是否允许匿名用户上传文件
    #anon_upload_enable=YES

    # 是否允许匿名用户创建目录
    #anon_mkdir_write_enable=YES

    # 用户进入目录时是否显示message_file指定的文件内容(需要添加message_file配置项)
    #dirmessage_enable=YES

    # 强制ftp数据传输使用20端口,默认YES
    connect_from_port_20=YES

    # 登陆后显示的信息(欢迎信息)
    ftpd_banner=Horizon FTP.

    # 为YES时,禁止所有用户访问上级目录,只能访问各自的家目录
    chroot_local_user=YES

    # 如果禁止所有用户访问上级目录,即chroot_local_user=YES,则该项需配置为YES
    # 如果没有配置该项,则要求ftp根目录权限不可写,否则登录时报:500 OOPS错误
    # vsftp2.3.5之后版本,该配置项需要手动添加
    allow_writeable_chroot=YES

    # 和前面同名配置项一样
    chroot_local_user=YES

    # 设置chroot_list_file是否有效
    chroot_list_enable=YES

    # 当chroot_list_enable=YES时,该文件生效,该文件需要手动添加,存放用户列表
    # 如果所有用户被限制只能访问家目录,静止访问上级目录(即chroot_local_user=YES)
    # 那么该文件内的用户为特权用户,可以不被限制地访问家目录之上的目录
    # 反之,如果所有用户都不被限制,都可以访问上级目录,即(chroot_local_user=NO)
    # 则该文件内部的用户为被限制的用户,只能访问各自家目录,禁止访问上级目录
    chroot_list_file=/etc/vsftpd.chroot_list

    # 设置vsftpd使用utf8编码的文件系统
    utf8_filesystem=YES

以上列出的只是部分配置项,没列出的配置项保持默认即可

其他相关文件:

  • /etc/ftpusers 文件
    该文件内的用户一律禁止ftp连接,默认列表包括了root, daemon, nobody等。需要禁止某个用户,把用户名添加进来即可。
  • userlist_file 文件
    该文件需手动创建和指定,一般设置成/etc/vsftpd.user_list,和以下三个配置项相关:

    # 是否使userlist_file配置的文件生效
    userlist_enable=YES

    # 设置为YES时,userlist_file指定文件内的用户被禁止连接,类似于ftpusers
    # 设置为NO时,只允许userlist_file指定文件内的用户连接,限制其他一切用户
    userlist_deny=YES

    # 文件名和路径可自由指定
    userlist_file=/etc/vsftpd.user_list

    # 新版vsftpd配置文件默认没有这三个配置项,要手动添加,个人认为一般不需要添加
    # 需要限制连接使用/etc/ftpusers文件即可

  • chroot_list 文件
    该文件需要手动创建和指定,文件名和路径可自由指定,相关配置项有chroot_local_user、chroot_list_enable和chroot_list_file,具体配置相关参考上面配置文件注释说明。

配置文件,我尚未做任何修改,这里只是提供修改的思路,还其他文件我野未修改。下面来介绍一下命令行模式的ftp如何使用。原文地址

建立ftp连接(用户名密码登录)

ftp user@IP Address or domain

连接成功则会返回下列信息:

230Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

目录操作

FTP 命令可以列出、移动和创建文件夹,如同我们在本地使用我们的电脑一样。ls可以打印目录列表,cd可以改变目录,mkdir可以创建文件夹。

  • 使用安全设置列出目录
    ftp>ls
    服务器将返回:
    200 PORT command successful.Considerusing PASV.
    150Here comes the directory listing.
    directory list
    ....
    ....
    226Directory send OK.
  • 改变目录:改变目录可以输入
    ftp>cd directory
    服务器将会返回:
    250Directory succesfully changed.

使用 FTP 下载文件

在下载一个文件之前,我们首先需要使用lcd命令设定本地接受目录位置。

lcd /home/user/yourdirectoryname

如果你不指定下载目录,文件将会下载到你登录 FTP 时候的工作目录。

现在,我们可以使用命令 get 来下载文件,比如:

get file

文件会保存在使用lcd命令设置的目录位置。

服务器返回消息:

local:file remote:file
200 PORT command successful.Considerusing PASV.
150Opening BINARY mode data connection forfile(xxx bytes).
226File send OK.
XXX bytes received in x.xx secs (x.xxx MB/s).

下载多个文件可以使用通配符及 mget 命令。例如,下面这个例子我打算下载所有以 .xls 结尾的文件。

mget *.xls

使用 FTP 上传文件

完成 FTP 连接后,FTP 同样可以上传文件

使用 put命令上传文件:

put file

当文件不再当前本地目录下的时候,可以使用绝对路径:

put /path/file

同样,可以上传多个文件:

mput *.xls

关闭 FTP 连接

完成FTP工作后,为了安全起见需要关闭连接。有三个命令可以关闭连接:

bye
exit
quit

任意一个命令可以断开FTP服务器连接并返回:

221Goodbye
最后修改:2018 年 03 月 18 日
如果觉得我的文章对你有用,请随意赞赏