当前位置: 安卓之星 -> Linux开发 -> Linux基础教程之FTP文件传输

Linux基础教程之FTP文件传输

作者:网络 发表于: 2017-03-31 点击: 542 次

1.1 FTP概述

FTP是文件传输协议(File Transfer Protocol)的英文简称,用于Internet控制文件的双向传输。FTP是一个客户端/服务器系统,用户通过一个支持FTP协议的客户端程序,连接远程FTP服务器,向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。FTP通常运行在两个单独的端口2021上,端口21用作控制流(传输登录信息和命令),端口20用作数据流(传输真正的文件内容)。 

FTP使用过程中用户经常遇到两个概念:下载(Download)和上传(Upload)。下载文件就是从远程主机拷贝文件至自己的计算机上;上传文件就是将文件从自己的计算机中拷贝至远程主机上。 

一般而言FTP不被认为是一种很安全的协议,因为在默认模式中,控制信息(登录密码)是明文传输的,同样数据流也不加密。对于FTP的多数应用而言,安全通常不是问题。FTP服务器最经常的用法是作为匿名FTP,因此不需要很多安全性。网页浏览器、文件管理器等都支持访问FTP服务器。

 

1.2 配置FTP服务器

1.2.1 VSFTP安装

Linux系统一般默认安装好vsftp,用户设定vsftp配置文件/etc/vsftpd.conf后,启动vsftp后即可使用。如果没有安装FTP服务器。

 

# rpm -qpl vsftpd-2.2.2-7.fc13.i686.rpm            查询vsftpd安装目录文件

# rpm -ivh vsftpd-2.2.2-7.fc13.i686.rpm             安装vsftp服务程序

 

# yum install vsftpd                                        也可以通过yum工具自动下载安装

 

目录文件

文件

说明

/usr/sbin/vsftpd

Vsftpd服务程序

/etc/vsftpd/vsftpd.conf

Vsftpd服务程序配置文件

/etc/rc.d/init.d/vsftpd

Vsftpd服务程序启动脚本

/etc/pam.d/vsftpd

Vsftpd访问权限设置

/var/ftp/pub

匿名用户工作目录

 

不同Linux发行版本的vsftp目录文件可能不一样,有的没有/etc/vsftp目录。

 

1.2.2 VSFTP配置

FTP服务器种类繁多,配置语法也各不相同。但通过/etc/vsftpd.conf的一些概念可以了解其他服务器提供的选项类型。其他FTP配置文件也是类似的。用户设定vsftp配置文件/etc/vsftpd.conf后,重启启动vsftp后即可使用。有些系统配置文件是/etc/vsftp/vsftpd.confvsftp配置文件以#开头的是注释行,每个选项都采用option=value的形式,主要有如下一些选项。

 

anonymous_enable                                      是否允许匿名登录

anon_world_readable_only                            匿名用户只能下载公开开放的文件

chroot_local_user                                        用户登录后是否限制在/home相应目录

pasv_enable                                                是否采用被动FTP方式

ssl_enable                                                  是否支持SSL安全连接

tcp_wrappers                                              收到的连接是否需要经过访问控制(如/etc/hosts.allow/etc/hosts.deny

 

用户可配置匿名用户访问FTP服务器,也可以设定用户名和密码。匿名用户FTP服务器的工作目录是/var/ftp/pub/;指定用户FTP服务器的工作目录是/home/xxx

 

创建FTP访问用户

# adduser androidstar                                             如果要创建新用户,用户androidstar

# passwd androidstar                                              输入密码 假定androidstar

 

修改配置文件

# vi /etc/vsftpd/vsftpd.conf                                  修改FTP配置文件,以下为内容

 

anonymous_enable=YES                                   匿名用户可访问

……

chroot_list_enable=YES                                     禁止用户离开自己的目录,去掉#

# (default follows)

chroot_list_file=/etc/vsftpd/chroot_list                  可访问用户列表文件,去掉#

 

配置文件中指定了可访问用户列表文件,就要创建文件,并添加用户

# vi /etc/vsftpd/chroot_list                                  创建FTP用户列表文件,以下为内容

hongdy                                                            添加访问用户

 

1.2.3 VSFTP运行 

# /etc/init.d/vsftpd start/restart/stop                    启动/重启/停止FTP服务器

 

有时需要设置SELinux相应权限才能访问

# setsebool ftpd_disable_trans 1                         如果开启SULinuxdisable SELinux

 

1.3 使用FTP客户端

命令行工具wget可以直接从FTP服务器端下载文件,传统的FTP客户端提供自己的Shell环境,通过它传递控制命令和配置连接。有时候使用GUI前端为FTP传输提供更友好的界面。 

例子:

$ wget ftp://user:[email protected]/pub/somefile

 

Linux命令行下可以使用ftplftpsftp来访问FTP服务器。ftp是传统的ftp客户端工具;lftp是支持Shellftp客户端工具;sftp是通过ssh安全协议传输文件的ftp客户端工具。

 

例子(ftp访问FTP服务器)

$ ftp 192.168.1.21

Connected to 192.168.1.21

220 Serv-U FTP Server v6.1 for WinSock ready…

500 ‘AUTH’: command not understood.

500 ‘AUTH’: command not understood.

KERBEROS_V4 rejected as an authentication type

Name (192.168.1.21:hongdy): androidstar                输入用户名

331 User name okay, need password.

Password:                                                       输入密码

230 User logged in, proceed.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

ftp> get test                                                     下载test文件

ftp> put test2                                                   上传test2 文件

ftp> quit

 

例子(lftp访问FTP服务器)

$ lftp 192.168.1.2   或者直接输入 lftp androidstar:androidstar@192.168.1.21

lftp 192.168.1.2:~> user androidstar androidstar

lftp androidstar@192.168.1.21:~> ls

lftp androidstar@192.168.1.21:~> get test                下载test文件

lftp androidstar@192.168.1.21:~> put test2              上传test2文件

lftp androidstar@192.168.1.21:~> mirror dir1            下载dir1 目录

lftp androidstar@192.168.1.21:~> mirror -R dir2        上载dir2目录

lftp androidstar@192.168.1.21:~>quit

 

例子(sftp访问FTP服务器)

# sftp [email protected]

Connecting to 192.168.1.21…

androidstar@192.168.1.21’s password:

sftp>

sftp> get test                                                   下载test文件

sftp> put test2                                                 上传test2文件

sftp> quit

相关文章

相关文章

赶快留言冒泡

  • 评论 (0)
  • 引用通告 (0)
目前还没有任何评论.
目前还没有任何Trackbacks和Pingbacks.
吐个泡浮上去.