FTP是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。
FTP支持两种模式:PORT(主动)、PASV(被动)。
PORT模式:首先FTP 客户端和服务器的TCP 21端口建立连接, 然后在这个通道上发送PORT命令,命令中包含客户端用某个端口连接,服务器收到命令后会利用数据端口(20)连接客户端那个端口。
PASV模式:当开启一个FTP连接时,客户端会随机打开两个非特权端口A和B, 其中A端口和服务器的TCP 21端口建立连接,在命令通道上客户端向服务器发送PASV命令,服务器收到后就会随机打开一个非特权端口P,然后发送PORT命令给客户端,客户端收到后利用B端口连接到服务器的P端口进行传送数据。
安装ftp
#rpm -qa vsftpd 查看是否已经安装
#yum install vsftpd -y 安装
#service vsftpd start 开启服务
#ftp 192.168.254.5(ip地址) 登录
响应码
1xx:信息
2xx:成功类代码
3xx:提示需要进一步操作类代码
4xx:客户端错误
5xx:服务端错误
登录方式
配置文件/etc/vsftpd/vsftpd.conf
匿名用户设置:
anonymous_enable=YES 是否启用匿名用户
anon_upload_enable=YES 上传
anon_mkdir_write_enable=YES 创建目录
anon_other_write_enable=YES 删除
限制系统用户锁定在家目录:
chroot_list_enable=YES 限制所有
chroot_list_enable=YES 限制一部分
chroot_list_file=/etc/vsftpd/chroot_list 将需要限制用户写入此文件
/etc/vsftpd/ftpusers 文件中的系统用户将被禁止登录
连接数限制:
max_clients=# FTP服务器最大接入客户端数
max_per_ip=# 每个ip最大连接数
传输速率限制:
anno_max_rate=# 匿名用户最大传输速率
匿名用户:
用户名:ftp;密码为空;登录目录:/var/ftp。
系统用户:
用户名:本地用户;密码:用户密码;登录目录:用户家目录。
pam_service_name=vsftpd
虚拟登录
在/etc/vsftpd/下创建自定义名文件,奇数行为用户名,偶数行为密码;所有虚拟用户目录为一个系统家目录。
1、创建用户密码文本
vim /etc/vsftpd/vftpuser
user1
redhat1
user2
redhat2
2、生成虚拟用户认证db文件
db_load -T -t hash -f /etc/vsftpd/vftpuser /etcvsftpd/vftpuser.db
3、编辑PAM文件
方法一、vi /etc/pam.d/vsftpd 内容全部注释掉,增加以下两句
auth required /lib(64)/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib(64)/security/pam_userdb.so db=/etc/vsftpd/vftpuser
方法二、在/etc/pam.d/下创建新文件vsftpdauth,将以上两句写入,然后编辑配置文件vsftpd.conf.
pam_service_name=vsftpdauth 改为你创建的文件名
4、创建一个系统用户,所有虚拟用户都被映射成此系统用户
useradd -d /home/vftp -s /sbin/nologin virtual 用户名为virtual
chmod 700 /home/vftp 设置权限
5、在配置文件中启用虚拟用户,增加以下参数:
guest_enable=YES
guest_username=virtual
重启FTP服务