FTP安装及使用
阅读原文时间:2023年07月09日阅读:2

通过网络传输数据的手段

  1. ssh
  2. http
  3. nfs
  4. rsync
  5. ftp
  6. samba

ftp的简介:

  1. ftp是应用层协议,是基于TCP
  2. 使用21端口

FTP的模型
-------- 命令连接 ---------
| Client | <-------------------> | Server |
| | | |
| | 数据连接 | |
| | <-------------------> | |
--------- ----------

1)命令连接(控制连接)
这个连接,始终是打开的。
客户端,通过这个连接,来发送命令。

2)数据连接
用来传输数据的。
数据连接,是按需打开的。
在传输数据时,才打开数据链接。

了解ftp服务器的“数据连接"的模式
1)主动模式
服务器主动连接客户端。
2)被动模式
客户端主动连接服务器。

FTP的服务器端程序
1) vsftpd
very secure ftp daemon
非常安全的ftp服务器。
2) proftpd
3) pureftpd

客户端ftp程序
1)命令行界面
ftp
lftp
2) 图形界面
gftpd

安装: yum install vsftpd
说明: vsftpd软件,包含了客户端ftp

vsftpd的主要程序:
1) /etc/vsftp 配置文件目录
2) /etc/init.d/vsftpd 服务程序的脚本
3) /usr/sbin/vsftpd 主程序

启动vsftpd
# /etc/init.d/vsftpd start

# service vsftpd start

设置为开机启动
# chkconfig vsftpd on

关闭防火墙(先关闭,用于测试)
在生产环境中,需要打开防火墙,再对指定端口开放。
# /etc/init.d/iptables stop

安装ftp客户端
# yum install ftp
说明:也可以直接安装服务器端的vsftpd

使用ftp客户端
# ftp ftp服务器端的IP地址
提示输入用户名和密码

用户名:
ftp或anonymous 表示使用“匿名用户”登录。
如果登录失败,需要检查服务器的vsftpd的配置文件

   还可以输入其他系统用户,或普通用户。 

vsftpd的配置文件
/etc/vsftpd/vsftpd.conf

anonymous_enable=YES
表示允许匿名用户登录,默认是不允许匿名用户登录。

local_enable=YES
表示是否允许系统用户和普通用户以ftp登录

write_enable=YES
是否允许系统用户和普通用户上传文件

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

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

dirmessage_enable=YES
当dirmessage_enable为YES时,通过ftp进入某个目录后,
就会自动的把该目录下的.message文件输出。
目的在于:自动提示。

xferlog_enable=YES
是否使用传输日志,如果为YES,则所有数据传输,都会被记录到传输日志文件中。

xferlog_file=….
用来指定传输日志的文件

chown_uploads=YES
是否允许改变文件上传后的属主。
疑问:设置为NO之后,数组被修改为文件上传者。

chown_username=
表示文件上传后,文件的所有者修改为谁

//待确认!
chroot_list_enable=YES 是否把chroot_list_file中指定的用户以ftp登录后,被限制在其家目录中访问。
而且把他的家目录显示为"/"目录。
chroot_list_file=

userlist_enable=YES
userlist_deny=NO
如果userlist_enable=YES,
那么,userlist_deny将生效:
如果userlist_deny=YES, 那么/etc/vsftpd/user_list文件中的用户名,将不能ftp登录
如果userlist_deny=NO, 那么/etc/vsftpd/user_list文件中的用户名, 可以ftp登录

使用ftp时,有两个当前目录:
1)客户端的当前目录

  就是使用ftp登录之前的当前目录  
  可以使用lcd命令来改变。  

2)服务器端的当前目录

使用匿名用户登录ftp服务器
使用匿名用户登录时(用户名输入为ftp或anonymous)
使用pwd显示的是 /
注意,此时的/并不是服务器上的/
而是 /var/ftp

  1. 下载
    把ftp服务器上的文件下载到本地客户端
    把服务器上的资源下载本地客户端的当前目录

    # get a.txt
    表示把服务器当前目录下的a.txt 下载到客户端的当前目录下。

    # get pub/a.txt
    表示把服务器当前目录下的pub/a.txt下载到客户端的当前目录下的pub目录下!

  2. 上传
    默认情况下,是禁止匿名用户使用ftp上传文件。
    匿名用户不能在“根目录”(/var/ftp)下上传文件

    匿名用户上传文件,需要:
    1)把vsftpd的配置文件中的anonymous_enable设置为YES
    anonymous_enable=YES

    2)在服务器的对应目录中对ftp用户授权
    setfacl -m u:ftp:rwx /var/ftp/upload
    表示匿名用户可以在/var/ftp/upload目录下上传文件了

非匿名用户的使用
以下用户都是指vsftpd服务器端的用户

1)root用户
默认情况下,禁止root用户通过ftp登录
为什么?

 因为vsftpd是使用pam来实现用户认证(登录检查)  
 而pam的配置文件 /etc/pam.d/vsftpd中:  
---------------------------------------------------------------------------------------------  
 uth       required pam\_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=su  

 表示/etc/vsftpd/ftpusers文件中的所有用户不能通过ftp登录

 如果把root从该文件中删除,那么就可以使用root用户ftp登录。  
 但是,实际生产环境中,不应该允许root用户ftp登录, 因为不安全!

2) 使用普通用户
使用普通用户的用户名和密码就可以登录。
登录后的,默认的当前目录,就是该 普通用户的家目录

 此时,ftp> pwd  
 所显示的路径中的/就是服务器端真正的根目录

 直接使用get下载,put上传

 1)普通用户登录以后,默认的当前目录是,该用户的家目录  
 2)上传和下载时,都要把当前目录切换到合适的位置。  
    客户端的当前目录使用lcd切换,服务器端的当前目录使用cd切换

3)使用系统用户
uid为1-499, 而且不能用来登录系统

用法和普通用户类似。

ftp客户端中有很多命令
ftp > help
可以显示能够使用的命令

最常用的命令:
put
get
cd
lcd
ls