FTP服务
一、FTP概论
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。
FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。
二、FTP分类及FTP用户分类
FTP分为主动模式和被动模式;
主动模式:服务器主动发起数据连接
被动模式:服务器被动等待数据连接
FTP用户:
匿名用户:不用输用户
本地用户:直接使用本地的系统用户账号进行验证
虚拟用户:不同于本地用户
三、FTP服务搭建
(1)匿名用户
服务端 ↓ ↓ ↓
yum -y install vsftpd ==>FTP软件
匿名FTP访问的目录
cd /var/ftp 里面有一个pub/目录,这个是共享目录
chown ftp.root pub/==>修改pub的属主,ftp的程序用户默认就有
——ftp配置文件==>/etc/vsftpd/vsftpd.conf
为了安全起见可以先将ftp配置文件做备份==>cp vsftpd.conf{,.bak}
开启匿名用户上传的权限==>anon_upload_enable=YES
在下面手动添加匿名用户的权限掩码==>anon_umask=022
开启匿名用户新创建目录的权限==>anon_mkdir_write_enable=YES
在下面手动添加匿名用户的其他(删除权限)==>anon_other_write_enable=YES
——配置完成
启动ftp服务==>/etc/init.d/vsftpd start
netstat -antup | grep vsftpd==>检查一下端口确认是否开启
客户端 ↓ ↓ ↓
安装FTP服务==>yum -y install ftp
再服务端的共享目录pub/创建文件
ftp 192.168.200.126==>登录方式
匿名用户登录事名字都是ftp;没有密码
>>>多人共享一个目录
(2)本地用户
——配置文件==>vim /etc/vsftpd/vsftpd.conf
可以将匿名关了==>anonymous_enable=NO
chroot_local_user=YES==>大概在96行开启本地用户的目录锁定
(每个用户的上传文件都会在自己的家目录里)
——配置完成
重启vsftpd服务==>service vsftpd reload
客户端测试 ↓ ↓ ↓
创建个本地用户==>useradd yunjisuan && echo "123456" | passwd -stdin yunjisuan
ftp 192.168.200.126
登录密码写创建用户的用户名和密码
>>>每个用户都有自己的独立空间
FTP服务器的黑名单==>/etc/vsftpd/ftpusers和/etc/vsftpd/user_list
(将用户的用户名写入黑名单内,写对密码也禁止登陆)
(3)虚拟用户
先创建一个虚拟账号文件,需要使用db_load工具
cd /etc/vsftpd
——创建一个虚拟账号文件==>vim ./vusers.list
例:zhangsan ==>虚拟用户名
123 ==>密码
lisi
123
——配置完成
db_load -T -t hash -f vusers.list vusers.db
(使用db_load给这个文件转换成数据文件"-T"并使用hash加密"-t hash"加密后叫vusers.db)
chmod 600 vusers.db==>只能让属主读写
创建虚拟映射账号virtual,并指定家目录为/var/ftproot
useradd -d /var/ftproot/ -s /sbin/nologin virtual
mkdir -p /var/ftproot/ && chmod 755 /var/ftproot/
——创建一个pam认证文件==>vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
——配置完成
——修改/etc/vsftpd/vsftpd.conf 配置文件
将pam认证文件加上.vu在117行==>pam service name=vsftpd.vu
在下面添加是否开启为YES==>guest_enable=YES
在下面添加开启本地映射账号==>guest_username=virtual
——配置完成
重启vsftpd服务==>service vsftpd reload
>>>共享同一个目录==>/var/ftproot
(登录时通过虚拟账号virtual显示)
>>>实现每个虚拟用户不同的根目录:
cd /etc/vsftpd && mkdir ./vusers.dir
在vusers.dir里创建几个文件就是各个用户的配置文件
例:vim zhangsan==>自己写配置文件
anon_upload_enable=YES==>允许匿名上传
anon_mkdir_write_enable=YES==>允许匿名状态下创建目录
anon_other_write_enable=YES==>允许匿名用户有除了创建之外的其他写权限
anon_mas_rate=1==>设置下载速度和上传速度为1字节(为0表示不限速)
local_root=/var/zhangsan==>单独给zhangsan设置一个自己的目录
——配置完成
创建zhangsan的本地目录==>mkdir -p /var/zhangsan
chown virtual.root /var/zhangsan==>修改zhangsan的属主
——修改vsftpd.conf主配置文件==>vim /etc/vsftpd/vsftpd.conf
添加匿名用户的掩码==>anon_umask=022
在最后一行添加虚拟账号配置文件的路径==>user_config_dir=/etc/vsftpd/vusers.dir
——配置完成
重启vsftpd服务==>service vsftpd reload