ftp(文件传输协议)服务默认使用TCP协议的20、21端口与客户端进行通讯。20端口用于创建数据链接,并传输文件数据;21端口用于创建控制链接,并传输ftp控制指令。linux
ftp数据链接分为 主动模式和被动模式;数据库
客户端与服务器创建数据链接之后,就能够根据从控制链接中发送的ftp命令进行上传和下载文件。传输过程当中是否进行字符转换,分为文本模式和二进制模式。使用二进制模式笔文本模式更有效率。大多数ftp客户端能够根据文件类型自动选择文件传输模式,无需用户手工指定。vim
ftp用户类型分为: 1.匿名用户; 2.本地用户; 3.虚拟用户。
接下来咱们就在linux环境中搭建ftp服务缓存
[root@localhost ~]# ifconfig ens33 //肯定本机IP地址(建议静态IP地址) [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0 //关闭防火墙、SELinux
[root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# rm -rf * [root@localhost yum.repos.d]# vim a.repo //本身编写一个yum配置文件,必须以“repo”结尾,内容以下: [a] //yum仓库ID baseurl=file:///mnt //使用本地系统镜像做为YUM源 gpgcheck=0 //不查公钥 [root@localhost ~]# yum clean all //清楚YUM缓存(避免出错) [root@localhost ~]# mount /dev/cdrom /mnt //挂载系统盘 [root@localhost ~]# yum -y install vsftpd //安装FTP服务
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf //FTP服务的配置文件
FTP服务配置文件一些经常使用的配置选项参数: 匿名用户经常使用参数: anonymous_enable=YES:是否容许匿名访问 anon_umask=022:设置匿名用户所上传文件的默认权限掩码值 anon_root=/vat/ftp:设置匿名用户的宿主目录(默认为/var/ftp) anon_upload_enable=YES:是否容许匿名用户上传文件 anon_mkdir_write_enable=YES:是否容许匿名用户有建立目录的写入权限 anon_other_write_enable=YES:是否容许匿名用户有其余写入的权限(例如更名、修改、删除等) 本地用户经常使用参数: local_enable=YES:是否容许本地系统用户访问 local_umask=022:设置本地用户所上传文件的默认权限掩码值 local_root=/var/ftp:设置本地用户的ftp根目录(默认为用户的宿主目录) chroot_local_user=YES:是否将ftp本地用户禁锢在宿主目录中 local_max_rate=0:限制本地用户的最大传输速率(0为无限制),单位是字节/秒(B/s) allow_writeable_chroot=YES:容许被限制用户的主目录具备写权限 全局配置经常使用参数: listen=YES:是否以独立的运行方式监听服务 listen_address=0.0.0.0:设置监听ftp服务的IP地址 listen_port=21:设置监听ftp服务的端口号 write_enable=YES: 启用任何形式的写入权限(好比上传、删除文件等)都须要开启此项 download_enable=YES:是否容许下载文件(好比创建仅限于浏览、上传的ftp服务器时可将其设置 为"NO") xferlog_enable=YES:启用xferlog日志,默认记录到/var/log/xferlog xferlog_std_format=YES: 启用标准的xferlog日志格式 connect_from_port_20=YES:容许服务器主动模式 pasv_enable=NO:禁止被动模式链接;默认容许被动模式链接 pam_service_name=vsftpd:设置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名) userlist_enable=YES:是否启用user_list用户列表文件 max_clients=0:最多容许多少客户端同时链接(0为无限制) max_per_ip=0 对来自同一个IP地址的客户端,最多容许多少个并发链接(0为无限制) tcp_wrappers=YES:是否启用TCP_Wrappers主机访问控制 虚拟用户经常使用参数: guest_username=test:指定映射的系统用户名称; guest_enable=YES:是否启用虚拟用户; allow_writeable_chroot=容许被限制用户的主目录具备写权限(此项必须写入,不然可能会报错) anon_world_readable_only=NO:容许用户下载目录内容 anon_other_write_enable=YES:容许匿名用户有其余写入权限,如重命名、覆盖及删除文件等; user_config_dir=/etc/vsftpd/vusers_dir:指定虚拟用户独立的配置文件目录;
经常使用的配置差很少就这些(配置文件严格区分大小写)服务器
[root@localhost ~]# chown ftp /var/ftp/pub //匿名用户默认登陆的文件夹是/var/ftp/pub目录、匿名用户对应系统用户ftp;因此将ftp系统用户做用目录的属组
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf ……………… //省略部份内容,填写如下内容 anon_upload_enable=YES //容许匿名用户上传文件 anon_mkdir_write_enable=YES anon_other_write_enable=YES //容许匿名用户具备写入权限 [root@localhost ~]# systemctl restart vsftpd //重启FTP服务
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf ……………… //省略部份内容,添加如下内容 allow_writeable_chroot=YES // 容许被限制用户的主目录具备写权限 chroot_local_user=YES //将用户禁锢在宿主目录
[root@localhost ~]# useradd xiaozhang [root@localhost ~]# passwd xiaozhang [root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# vim /etc/vsftpd/123.txt //添加如下内容 benet 123456 benet1 123456 //奇数行为用户名、偶数行为密码(一行一个,不容许有空格)
[root@localhost ~]# cd /etc/vsftpd/ [root@localhost vsftpd]# db_load -T -t hash -f 123.txt vusers.db //使用db_load工具建立用户名、密码的数据库文件
[root@localhost ~]# vim /etc/pam.d/vsftpd.vu //必须建立一个以“vu”结尾的文本文件,填写如下内容: auth required pam_userdb.so db=/etc/vsftpd/vusers account required pam_userdb.so db=/etc/vsftpd/vusers //指定用户类型、用户属性和验证使用的模块、db数据库文件
[root@localhost ~]# useradd -d /var/ftproot -s /sbin/nologin xiaoli [root@localhost ~]# chmod 755 /var/ftproot/ //修改用户宿主目录的权限(这就是虚拟用户登陆访问的目录)
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf ……………… //省略部份内容,修改、添加如下内容 pam_service_name=vsftpd.vu //设置用于用户认证的PAM文件位置 userlist_enable=YES //启用user_list用户列表文件 tcp_wrappers=YES //启用TCP_Wrappers主机访问控制 guest_username=xiaoli //来宾用户对应的系统用户 guest_enable=YES //启动来宾用户 allow_writeable_chroot=YES //禁锢在宿主目录 user_config_dir=/etc/vsftpd/vusers_dir //指定虚拟用户独立的配置文件目录
[root@localhost ~]# mkdir /etc/vsftpd/vusers_dir [root@localhost ~]# vim /etc/vsftpd/vusers_dir/benet anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES [root@localhost ~]# vim /etc/vsftpd/vusers_dir/benet1 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES //须要手动建立目录及配置文件 [root@localhost ~]# systemctl restart vsftpd //重启FTP服务
自行测试!!!并发
实验完成!!!app