FTP安装及使用

通过网络传输数据的手段
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

  

原文地址:https://www.cnblogs.com/The-day-of-the-wind/p/12063854.html