一、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/