一:FTP工作原理:
a:主动模式
1: 客户端向服务端发起控制连接 端口号为21。并发送一个自己随机生成的传输端口给服务器
2:服务器收到传输端口号,与客户端建立数据传输连接,数据传送完成后断开连接。
b:被动模式
1:客户端与服务端的控制连接建立联系,并请求被动连接。
2: 服务端接受到客户端的被动请求,随机生成一个数据传输端口,发送给客户端。
3:客户端使用服务端发送的端口,来跟服务器进行数据传输。
在实际的过程中,绝大多数都是使用被动模式,因为如果客户端随机生成的端口发给服务端,服务主动连接客户端,会被客户端的防火墙阻挡! 所以一般使用被动模式
二:FTP的配置:
1:首先安装服务器 vsftpd包。
2:客户端使用命令wget lftp ftp 来进行连接。
a. wget用法
下载文件:wget -user=hello -password=123 ftp://172.16.28.19/file
下载文件夹:wget -r ftp://172.16.28.19/soft/dir -nH --cut-dir=1 -P /etc -r表示rescure递归文件,-nH选项表示去除上层目录,--cut-dir表示在根目录上再去除多个目录。-P表示目录重定向
b. lftp 172.16.17.25
下载文件 get 下载文件夹 mirror 上传文件put 上传文件夹 put -r ./dir
c. ftp 172.16.25.42
!ls 命令查看本机的目录,lcd 切换本机的当前目录,
三:服务器端配置
1:用户分为匿名用户,本地用户,虚拟用户
匿名用户的ftp共享目录为 /var/ftp 不需要输入密码。不能切换根目录。
anon_root=/var/dir 设置共享目录的路径。
2:本地用户的上传目录为默认为用户的家目录。可以切换根。可以通过增加字段user_config_dir=/etc/vsftpd/usersdir 来分别对用户进行局部配置。创建的文件名和用户名相同
3:通过增加userlist_enable=yes 启用用户控制列表文件。
userlist_deny=yes 表示禁止/etc/vsftpd/user_list中的所有用户使用ftp。
userlist_deny=no 表示允许/etc/vsftpd/user_list中的所有用户使用ftp.
/etc/vsftpd/ftpusers文件中的用户优先user_list配置,所有ftpusers的都允许使用ftp.
4:创建虚拟用户
a.创建一个虚拟用户映射的本地账户
useradd -d home_dir -s /sbin/nologin user
b.创建虚拟账户的用户名和密码,建立一个文件 vi /etc/vsftp/vname
在vname中加入用户名和密码,格式:一行用户名,一行密码。
c 生成数据库文件 db_load -T -t hash -f ./vname vname.db
d. 建立PAM认证文件,vi /etc/pam.d/vname.vu
在文件中添加两行 auth required pam_userdb.so db=/etc/vsftpd/vname
account required pam_userdb.so db=/etc/vsftpd/vname
e. 在/etc/vsftpd/vsftpd.conf中启用配置,添加字段 guest_enable=YES local_enable=YES pam_service_name=vsftpd.vu