文章目录
    
    
    
    一、 FTP服务
   
    
     FTP的定义
    
   
ftp定义:ftp:// ##文件传输协议 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一 FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端 其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源 在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上 由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议 默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息 但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关 如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定
同大多数Internet服务一样,FTP也是一个客户/服务器系统 用户通过一个客户机程序连接至在远程计算机上运行的服务器程序 依照 FTP协议提供服务,进行文件传送的计算机就是FTP服务器 而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端 用户要连上FTP服务器,就要用到FTP客户端软件,通过lftp命令连接
    
    
    二、配置ftp服务
   
    
     步骤一:
    
    打开server虚拟机,并且reset,保证一个纯净的实验环境
   
    ==步骤二:==给server配置网络
    
    
    
    ==步骤三:==给server主机改名
    
    
    
    
     步骤四:
    
    配置本地yum源
    
    由于server主机是7.0系统所以需要使用7.0的镜像配置yum源
    
    
    
    
    yum源配置成功。
   
    
     步骤五:
    
    
    vim /etc/sysconfig/selinux 关闭内核加强型防火墙,改SELINUX=disabled
    
    
    
    
     步骤六:
    
    reboot重启后输入,getenforce命令,发现是Disabled即可
    
    
    
    
     步骤七:
    
    
    给防火墙中加入ftp服务
    
     
   
    
     ####为什么使用ftp######
    
   
ftp在文件传输方面很优秀,企业中常用的是vsftpd(安全性高) http:// ftp:// yum search ftp 可以找到安装ftp服务的软件包
    
     ######ftp服务的基本信息#####
    
   
| 软件安装包 | vsftpd | 
|---|---|
| 默认发布目录 | var/ftp | 
| 默认发布目录的子目录 | /var/ftp/pub/ | 
| 协议接口 | 21/tcp | 
| 服务i配置文件 | /etc/vsftpd/vsftpd.conf | 
    
     ##########报错id的解析#####
    
   
| 500 | 文件系统权限过大 | 
|---|---|
| 530 | 用户认证失败 | 
| 550 | 服务本身功能未开放 | 
| 553 | 本地文件系统权限过小 | 
    
     ########搭建ftp服务器,以及进行测试######
    
    
    
     步骤一:
    
    寻找安装ftp的安装包
    
    
    
    
     步骤二:
    
    yum install 安装vsftpd和lftp
    
    
    
    
     步骤三:
    
    设置开启vsftpd服务,以及开机启动
    
    
    
    
     步骤四:
    
    访问验证是否搭建成功
    
     
   
    
    
    三、vsftpd服务配置参数
   
主机以什么样的身份配置ftp服务器,这些都需要在ftp服务器的客户端配置文件里面配置 在配置文件/etc/vsftpd/vsftpd.conf当中修改参数,每次修改后需要重启服务才能生效 systemctl restart vsftpd
    
    
    1、匿名用户设定
   
    
     匿名用户登陆限制
    
    
    
    
    可以看到匿名用户可以访问ftp服务器
    
    
     当在配置文件里改了参数后,重启服务
    
    
    
    
    
    
    发现匿名用户不可以访问ftp服务器
    
    
    
    
     匿名用户上传
    
    
    
    
    发现不可以上传,报错550,然后编辑配置文件,开启功能
    
    
    
    
    
    
     重启服务,再次上传
    
    
    
    
    
    
    报错553,表示权力过小
    
    然后chgrp ftp /var/ftp/pub
    
    
     chmod 775 /var/ftp/pub 因为匿名用户是以ftp用户的身份访问ftp服务器的,所以将ftp目录的所有组改成ftp以及赋予它775较大的权限,这样匿名用户才可以上传
    
    
    
    
    
    
    发现已经可以上传了。
   
    如果你将权限改成了777
    
    
    匿名用户登陆的时候,访问ftp服务器会提示500权限过大,所以我们只给775的权限,chmod 775 /var/ftp/
    
     
   
    
     匿名用户家目录修改
    
    
    匿名用户默认的家目录在/var/ftp/下,现在想要更改它的默认家目录,在配置文件里写下
    
    
    
    然后退出保存,
    
     重启服务
    
    
    在/westos下建立5个file,cd进入,ls查看存在
    
    再次匿名登陆,ls查看,更改成功
    
    
    
    
     匿名用户上传文件默认权限修改
    
   
    
    
    匿名用户默认上传文件 600,在配置文件里修改,
    
     重启服务
    
    
    
    
    
    
    可以看出文件的权限已经更改,passwd权限644.
   
    
     匿名用户建立目录
    
    
    anon_mkdir_write_enable=YES|NO
    
     
   
    
     匿名用户下载
    
    
    
    
    NO表示匿名用户可以下载
    
    
     重启服务
    
    
    
    
    文件下载到桌面下了
    
    
    
    
    
    下载目录,用mirror命令
    
     
   
    
     匿名用户删除
    
    
    anon_other_write_enable=YES|NO
    
    
    
    
     重启服务
    
    
    
    
    
     匿名用户使用的用户身份修改
    
    
    chown_uploads=YES
    
    chown_username=student
    
    
    
    
     重启服务
    
    
    可以看到用户id是1000,1000是student用户的id
    
    
    
    
     最大上传速率
    
    
    anon_max_rate=102400
    
    
    
    
    
    我们先划一个1.5G的文件,然后在没有限制速度的情况下,上传速度非常快平均83.2M/s,然后更改完配置文件后重新启动服务,发现匿名用户上传的速度变成了设置的102400k左右。
   
    
     最大连接数
    
    
    max_clients=2
    
    设置最大连接为2
    
    
    
    
    
    第一个,第二个都可以登陆,第三个客户端就不行了。
   
    
    
    2、本地用户设定
   
    
     本地用户登陆限制
    
    
    
    
    student用户可以登陆且访问
   
    在配置文件中,修改
    
    
    
    
     重启服务
    
    
    
    
    
    本地用户就不可以登陆了。
   
    
     本地用户写权限限制
    
    
    
    
    编辑配置文件
    
    
    
    
     重启服务
    
    
    
    
     
   
    
     本地用户家目录修改
    
    
    local_root=/yty
    
     重启服务
    
    
    
    
    
    
    先在student用户的家目录下创建file{1…3},再创建一个新的/yty目录当作修改的家目录,然后创建file{1…10}
    
    
    家目录修改完成。
   
    
     本地用户上传文件权限
    
    
    local_umask=
    
    
    
     重启服务
    
    
    
    
    可见我们上传的/etc/group的权限是600
   
    
     限制本地用户浏览/目录
    
    
    chroot_local_user=YES
    
    chmod u-w /home/student
    
    用户被锁定在家目录中不能cd切换到/目录下
    
    
    
     
   
    
    
    3、用户的黑白名单
   
    
     本地用户黑名单建立
    
    
    chroot_local_user=NO
    
    chroot_list_enable=YES
    
    chroot_list_file=/etc/vsftpd/chroot_list
    
    
     重启服务
    
    
    建立两个新用户westos,lee,并给与密码
    
    
    
    
    
    vim /etc/vsftpd/chroot_list 黑名单加入westos和student,表示westos和student不能登陆
    
    
    
    测试:
    
    student不能登陆
    
    
    
    westos不能登陆
    
    
    
    lee可以登陆
    
    
    
    
     本地用户白名单建立
    
    
    chroot_local_user=YES
    
    chroot_list_enable=YES
    
    chroot_list_file=/etc/vsftpd/chroot_list
    
     重启服务
    
    
    
    
    白名单加入westos和student,表示westos和student可以登陆,其他用户都不能登陆
    
    student可以登陆
    
    
    
    westos可以登陆
    
    
    
    lee不能登陆
    
     
   
    ==限制本地用户登陆(永久)
    
    vim /etc/vsftpd/ftpusers ##用户黑名单
    
    
    
    cd /etc/vsftpd/ 然后 vim ftpusers,加入student用户
    
     
   
    
    
    黑名单设置成功
   
    
     用户临时黑名单
    
    
    vim /etc/vsftpd/user_list
    
    
    
    加入westos用户,表示westos用户不能访问ftp服务器
    
    
    
    student用户和lee用户可以
    
    
    
     
   
    
     用户白名单设定
    
    
    userlist_deny=NO
    
    /etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在文件中出现的用户才可以登陆ftp服务器
    
    
    
    
     重启服务
    
    
    
    
    可见在名单中的westos用户可以登陆
    
    
    
    而不在白名单的lee和student用户就不可以登陆ftp服务器
    
     
   
     
   
    
    
    四、ftp虚拟用户的设定
   
    
    
    1.创建虚拟帐号身份
   
    
     ftp虚拟用户的设定(创建虚拟帐号身份)
    
   
给ftp服务器创建虚拟帐号身份,这样更安全。 vim /etc/vsftpd/westosfile ##文件名称任意,创建一个虚拟帐号的名单,里面的帐号是不存在的
    vim /etc/vsftpd/westosfile
    
     文件名称任意
    
    设定虚拟用户和登陆密码
    
    
    
     
   
db_load 加密命令 -T 转换 -t 建立 -f 指定文件 /etc/vsftpd/westosfile被加密文件 /etc/vsftpd/westosfile.db加密的文件
    查看vsftpd.conf认证时用的是pam认证
    
    在/etc/pam.d/下创建westos(
    
     文件名称任意
    
    )对应westosfile
    
    
    
     
   
account auth 帐号和密码 required 请求访问允许或拒绝 pam_userdb.so 验证程序 db=/etc/vsftpd/westosfile(.db) 在该文件里面验证
    
    
    
    
    将pam_service_name的指向改为westos原本(vsftpd),使westos中的账户和密码生效,再加入guest_enable=YES 允许游客登陆
    
    
     重启服务
    
    
    然后分别用user1,user2,user3登陆均可以登陆ftp服务器
   
并且是已匿名用户的虚拟帐号,默认家目录在/var/ftp/
    
    
    2、虚拟帐号身份指定
   
    vim /etc/vsftpd/vsftpd.conf
    
    
    
    
     重启服务
    
    
    chmod u-w /home/lee 给虚拟用户去掉写权限
    
    
    
    在lee用户家目录下创建file
    
    
    
    lftp 172.25.254.115 -u user1 匿名用户登陆ftp服务器,可以看到家目录下的文件file,即以lee身份登陆
    
     
   
    
    
    3、虚拟帐号家目录独立设定
   
    
     虚拟帐号家目录独立设定
    
    (使虚拟用户登陆进去不再使ftp用户的默认家目录)
    
    mkdir /ftphome/user1/user1dir -p
    
    mkdir /ftphome/user2/user2dir -p
    
    
    
    
    
    chmod 775 /ftphome/user1/user1dir
    
    chmod 775 /ftphome/user2/user2dir
    
    
    
    vim /etc/vsftpd/vsftpd.conf
    
    
    
    
     重启服务
    
    
    
    
    验证,此时可以看到此时user1的家目录是他自己家目录
   
    
    
    4、虚拟帐号独立配置
   
    
     虚拟帐号独立配置(想让哪个用户干什么就干什么)
    
    
    vim /etc/vsftpd/vsftpd.conf
    
    user_config_dir=/etc/vsftpd/userconf
    
    
    
    
     重启服务
    
    
    mkdir -p /etc/vsftpd/userconf
    
    vim /etc/vsftpd/userconf/user1 ==在此文件中设定配置文件的参数,此文件的优先级最高。
    
    
    
     
   
此文件设定的参数,此文件的优先级最高
    允许user1 匿名上传
    
    
    
    上传成功。
    
    再试一下user2可不可以上传
    
    
    
    发现也可以,是因为之前的anon_upload_enable=YES没有变成NO
    
    vim /etc/vsftpd/vsftpd/conf
    
    
    
    
     重启服务
    
    
    发现user2不能上传文件了
    
    
    
    再用user1登陆,发现user1仍可以上传文件
    
    
    
    配置成功。
   
 
