Linux中ftp安装与基本操作
 一、FTP 概述
 
 1、FTP 协议
使用两个 tcp 端口:21 - 传输命令,20 - 传输数据。 
 
 2、FTP 软件
     实现同一协议,有不同的软件。
 
服务器程序:RHL 默认安装 vsFTPd。
 
     客户端程序:ftp 命令,Windows 浏览器(资源管理器),等。
 
 3、vsFTPd
守护进程 vsftpd,在 tcp 21 号端口监听。
 
     检查是否安装:
     # rpm -qa | grep vsftp
 
     vsftpd-1.1.3-8
 
     即时启动:
 service vsftpd start
 
     启动系统时加载:
chkconfig vsftpd on
     
 4、用户帐号
     客户端连接 FTP 服务器时,使用的用户名和密码。
     1) 本地用户
     Linux 系统上的用户名和密码。
     2) 匿名用户
     用户名:anonymous 或 ftp。
     密码:空,或用户的邮址。
     3) 虚拟用户
     FTP 服务器的专有用户。不讲。
     
 二、配置文件
 
 1、vsFTPd 的配置文件
/etc/vsftpd/vsftpd.conf
     守护进程启动时,读取它。在缺省配置下即可工作。
 
 2、备份
     # cd /etc/vsftpd
     # cp vsftpd.conf vsftpd.conf.samp
     
 3、内容
     # Example config file ...
     ...
     # Allow anonymous FTP?
anonymous_enable=YES
     #
     # ...allow local users to log in.
 local_enable=YES
     ...
     
     # 开头的是注解行,其余是配置行。
 
 4、配置选项
     用 man vsftpd.conf 查看。
     1) 格式
     option=value
紧靠等号左右不能有空格。
     2) 布尔选项
     取值为 YES 或 NO。如 local_enable 和 anonymous_enable。
     3) 数值选项,如
connect_timeout 120
     4) 缺省值
     查看 man vsftpd.conf:
     ...
     anon_upload_enable
        If set to YES, anonymous users
        will be permitted to upload...
      
        Default: NO
     ...
 
 三、本地用户的操作
 
 1、服务器端 (Linux,172.16.2.3)
     设当前用户 yanji。创建目录和文件:
     $ cd
     $ mkdir poem
     $ cat > poem/brook.txt
     溪上
     采莲溪上女,舟小怯摇风。
     惊起鸳鸯宿,水云撩乱红。
     $ cat > poem/night.txt
     夜思
     床前明月光,疑是地上霜。
     举头望明月,低头思故乡。
 
 2、客户端 (ftp 命令,Windows 平台)
 例1.
 C:\>ftp 172.16.1.3
 Connected to 172.16.1.3.
 220 (vsFTPd 1.1.3)
 User (172.16.1.3:(none)): yanji
 331 Please specify the password.
 Password:
 230 Login successful. Have fun.
 ftp>
 
     ftp> 是提示符,输入交互命令操作。
     交互命令是 FTP 协议的一部分。man ftp 查看详细说明。部分如下:
     交互命令      意义
     pwd           显示服务器当前目录
     cd            切换服务器目录
     lcd           切换客户端目录
     ls [-l]       文件列表
     get           下载文件
     put           上传文件
mget          下载多个文件

mput          上传多个文件

     ascii 或 asc  文本传输方式
 
     binary或 bin  二进制传输方式
 
     quit  或 bye  退出
 
     依次输入下面交互命令操作:
 pwd
 ls -l
 cd poem
 ls -l
 lcd d:\
 get brook.txt
 bye
 
     Windows 中,查看 d:\brook.txt,分行不正确。因为,换行符随操作系统而异:
     操作系统  换行符
     Unix      \n
     Windows   \r\n
     Mac       \r
     
 3、修改配置
     $ su -
     # vi /etc/vsftpd/vsftpd.conf
     
     输入 :/#ascii,找到:
 
#ascii_upload_enable=YES
 
#ascii_download_enable=YES
     
此两行设置,上传、下载采用文本传输模式。去掉行首的 #,使这两行生效。存盘退出。
 
     重启服务:
 
     # /etc/init.d/vsftpd restart
     ...
     
     则服务进程重读配置文件。
     再下载 brook.txt,分行正确。
 
 4、上传文件
     例2.
     1) 客户端 (windows)
     在记事本上创建 d:\moon2.txt,内容:
     二
     明月照我床,卧看不肯睡。
     窗上青藤影,随风舞娟媚。
     
 另存为,选择编码 UTF-8。
     2) 客户端上传文件
     ftp 172.16.1.3 连接服务器。依次输入交互命令:
 cd poem
 put d:\moon2.txt
 bye
     3) 服务器端查看
     # exit
     $ cat poem/moon2.txt
     ...
     
 四、匿名用户的操作
     
 1、约定
 
 1) 帐号: 用户名 ftp 或 anoymous,密码 空。
 2) 根目录: /var/ftp
 3) 权限
    为了安全,缺省允许下载,不许上传。
 
 2、示例
     例3.
     1) 服务器端 (putty 窗口)
     # cd /var/ftp/pub
     # cat > moon1.txt
     一
     月冷寒江静,心头百念消。
     欲眠君照我,无梦到明朝。
     #
     
     2) 客户端 (Windows)
     ftp 172.16.1.3 连接服务器。依次输入交互命令:
 pwd
 ls -l
 cd pub
 lcd d:\
 get d:\moon1.txt
 bye
     3) 客户端
     用记事本查看 d:\moon.txt。
 
 五、服务器其他配置
 
 anonymous_enable=YES       允许匿名用户
 
 anon_upload_enable=YES     允许匿名用户上传文件
 
 anon_mkdir_write_enable=YES  允许匿名用户建目录
 
 chown_uploads=YES
 
 local_enable=YES           允许本地用户
 
 write_enable=YES           允许本地用户上传文件
 
 local_umask=022            本地用户上传文件掩码
 
                        用 666减去它,得缺省权限
 xferlog_enable=YES
 xferlog_file=/var/log/vsftpd.log  启用日志
 accept_timeout=60
 connect_timeout=60         超时秒数
 
 pam_service_name=vsftpd    pam 认证的文件名
 
 userlist_enable=YES        /etc/vsftpd.user_list
 
                            中的用户拒绝登录
 listen=YES   独立监听。
                            NO,委托 xinetd 监听
 
 
 
 我的硬盘空间有限,如何把帐号ftp默认的路径/var/ftp更改到别处?或者是,我的linux所有的目录都放在/根分区,因为空间紧张,我能否把ftp这个用户的默认路径放到别的分区? 
  可以,应该如下操作! 
 首先要把ftp这个用户删除 
  #userdel -r ftp 
 会有错误信息,不过不用理,这是正常的。 
 然后我们再把这个用户添加上,比如我想为帐号ftp的家目录设置在/mnt/LinG/ftp,我们就可以如下操作 
  [root@linuxsir001 root]# mkdir /root/ftp 
 [root@linuxsir001 root]# adduser -d /root/ftp -g ftp -s /sbin/nologin ftp 
  仅仅是这样做还不行,因为这样还是不能让匿名用户找到它的家目录,所以我们必须改变/mnt/LinG/ftp这个目录的权限。 
 [root@linuxsir001 root]# chmod 755 /root/ftp/ 
 [root@linuxsir001 root]# chown -R root.root /root/ftp/